Django的模型关系
我有3个Django的模型类:
1.客户 - 包含多种计费和送货地址
2.地址 - 可结算或送货地址
3.订单 - 包含引用1位客户,1位帐单地址和1位客户选择的送货地址。
Django的模型关系
如何创建在管理页面中呈现的订单类,以便用户可以选择使用哪个送货地址?
Address类有一个名为名称,以便用户可以指定短名称,如“HQ”或“纽约分行”属性。我希望用户能够使用短名称从下拉列表中选择送货地址。我是一个缓慢的菜鸟。
UPDATE
CODE
订货型号:
class Order(models.Model):
customer = models.ForeignKey(Customer)
shipping_address = models.CharField(max_length=80)// Should be a drop list based on the customer above
...
客户模式:
class Customer(models.Model)
name = models.CharField(max_length=80)
username = models.CharField(max_length=12)
password = models.CharField(max_length=12)
...
def __unicode__(self):
return self.name
地址型号:
class Address(models.Model):
name = models.CharField(max_length=80, help_text='Easy to remember name like "HQ"')
customer = models.ForeignKey(Customer)
address_type = models.CharField(max_length=12, choices=ADDRESS_TYPES,)
street_1 = models.CharField(max_length=100)
street_2 = models.CharField(max_length=100)
...
def __unicode__(self):
return self.name
感谢高级!
试着看一下这个问题:
How to work with dynamic data in Admin Panel?
django ForeignKey model filter in admin-area?
我认为他们是非常相似你的问题。您只需要在Address模型的admin.py中设置选项。
你的建议可能是该问题的解决方案。但是,我遇到了问题,因为Order对象与Address对象没有直接关系。我需要该表单才能显示Order类中客户字段引用的客户对象的地址名称。 –
如果你想用standart Django工具做这样的事情,你必须将字段改为ManyToMany/ForeignKey。如果你想使用下拉自动选择菜单 - 请看django-ajax-select。在这个下拉菜单中将会有自定义信息的方式......这只是自动选择的小部件,它为我工作。 – Dracontis
从理论上说,我想要做这样的事情在我的Order类: '地址= models.OneToManyField(customer.Address.all())。有任何想法吗? –
不,你不希望这样做。你想要一个多对多的关系,否则你不能在多个订单中使用一个地址。 –