在Django 1.8中
class OtherModel(models.Model):
somefield = models.CharField(max_length=20)
class Orderform(models.Model):
sell_item_id = models.CharField(max_length=20)
class Selled(models.Model):
orderform = models.ForeignKey("Orderform")
sell_count = models.IntegerField()
something = OtherModel.objects.get(id=sell_item_id)
我需要使用类似OtherModel.objects.get(id=sell_item_id)
的内容。
如何在sell_item_id
中获取class Selled(models.Model):
?
答案 0 :(得分:1)
您的架构无法在SQL中显示。
选项#1:
class Orderform(models.Model):
sell_item_id = models.CharField(max_length=20)
othermodel = models.OneToOneField("OtherModel")
得到它
Selled.objects.get(pk=1).orderform.othermodel
选项#2:
class Selled(models.Model):
orderform = models.ForeignKey("Orderform")
sell_count = models.IntegerField()
def something(self):
return OtherModel.objects.get(id=self.sell_item_id)
并获取
Selled.objects.get(pk=1).something()
但我认为你应该更好地考虑一下数据库架构。
答案 1 :(得分:0)
看起来你有几个问题,第一个是获得相关的
item
请注意Selled.objects.filter(order_form__sell_item_id =id_to_get).select_related('order_form')
之前的__
(双下划线)。这很重要,因为它说sell_item_id
Selleed
选择了sell_item_id
。并且OrderForm
确保通过一次调用db来将订单表单带回结果中。
现在,如果您想对select_related
执行此操作,则需要在OtherModel
中创建一个类似的ForeignKey
字段,这样您就可以进行与上述相同的查询。目前,你没有这种关系。
OtherNodel
别忘了跑:
class OtherModel(models.Model):
somefield = models.CharField(max_length=20)
orderform = models.ForeignKey("Orderform")
OtherModel.objects.filter(order_form__sell_item_id =id_to_get).select_related('order_form')
这应该可以解决问题。