python django类关联的问题

扯淡砖家 2015-02-05 09:53:17
最近自学python。用django按教程做过了一个投票网站
现在想在这个基础上建立一个复杂一点订餐系统。其实说是统计订餐信息的系统更准确点。语文学不好,表达能力差,大家别介意
下面是我遇到的问题
我设计的结构如下
food models.py
class Room(models.Model):
name = models.CharField(max_length=20, verbose_name='店名')
phone = models.CharField(max_length=20, verbose_name='电话')

class Meta:
verbose_name = '餐厅'
verbose_name_plural = '餐厅'

def __unicode__(self):
return self.name

class Food(models.Model):
room = models.ForeignKey(Room)
name = models.CharField(max_length=20, verbose_name='套餐名')
price = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='价格')

class Meta:
verbose_name = '套餐'
verbose_name_plural = '套餐'

def __unicode__(self):
return self.name


order models.py
class Order(models.Model):
room = models.ForeignKey(Room, verbose_name='餐厅')
payer = models.ForeignKey(User, verbose_name='付款人')
amount = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='总额')
date = models.DateField('date published')

class Meta:
verbose_name = '订单'
verbose_name_plural = '订单'

class OrderItem(models.Model):
order = models.ForeignKey(Order, verbose_name='订单')
name = models.ForeignKey(User, verbose_name='购买者')
commodity = models.ForeignKey(order.room.food_set.all(), verbose_name='商品')

class Meta:
verbose_name = '订单项'
verbose_name_plural = '订单项'


我的目的是要订单项关联订单指定餐厅的套餐。但是现在我在界面上看到的是所有的套餐
请问我该怎么关联
...全文
261 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nieoding 2015-02-10
  • 打赏
  • 举报
回复
你的需求,相关技术关键字叫django多级联动。 用django-smart-selects可以实现。 但是你要求在TabularInline里面也做到多级联动,貌似做不到

class Order(models.Model):
    room = models.ForeignKey(Room, verbose_name='餐厅')
    payer = models.ForeignKey(User, verbose_name='付款人')   
    amount = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='总额')
    date = models.DateField('date published')
    commodity = ChainedForeignKey(Food, chained_field="room", chained_model_field="room", verbose_name=u'商品')
    class Meta:
        verbose_name = '订单'
        verbose_name_plural = '订单'
你可以试试上面的代码,研究一下
扯淡砖家 2015-02-06
  • 打赏
  • 举报
回复
求助啊,没有人吗?
nieoding 2015-02-05
  • 打赏
  • 举报
回复

admin.site.register(Order,list_filter=('room',)
扯淡砖家 2015-02-05
  • 打赏
  • 举报
回复
引用 1 楼 IamNieo 的回复:

admin.site.register(Order,list_filter=('room',)

不好意思,不是你说的这种效果。

这个图中。订单项目中有重复的ABC是因为有两个餐厅,他们都有ABC套餐,而我希望只显示指定那家餐厅的套餐

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧