我试图实现反向连接,但我得到了这个错误:
'admin':i.mobileinv_imei.invoice.seller.username,AttributeError:"RelatedManager"对象没有属性"invoice">
这是我的型号.py
class Imei(models.Model):
mobile = models.ForeignKey(MobileCollection,on_delete=models.PROTECT)
imei = models.CharField(max_length=15,unique=True)
status= models.BooleanField(default=True)
class ImeiInvoice(models.Model):
item = models.ForeignKey(Imei,on_delete=models.PROTECT,related_name='mobileinv_imei')
invoice = models.ForeignKey(CustomerInvoice,on_delete=models.CASCADE,related_name='invoice')
price = models.DecimalField(max_digits=20,decimal_places=3)
class CustomerInvoice(models.Model):
seller = models.ForeignKey(User,on_delete=models.PROTECT)
customer = models.CharField(max_length=50)
mobiles = models.ManyToManyField(Imei,through='ImeiInvoice')
我试图从Imei
型号返回卖家名称,这是我的观点.py
def imei_sold_lists(request):
imeis = Imei.objects.filter(status=False)
lists = []
for i in imeis:
imei = {
'admin':i.mobileinv_imei.invoice.seller.username,
'customer':i.mobileinv_imei.invoice.customer,
'imei':i.imei,
'price':i.mobileinv_imei.price
}
lists.append(imei)
return JsonResponse({'data':lists})
有什么我错过的吗?还是我该换点什么?谢谢你的帮助。。
i.mobileinv_imei
是ImeiInvoice
的RelatedManager
。它不是一个奇异的ImeiInvoice
对象。当ForeignKey
是多对一关系时,您似乎在尝试将其用于一对一关系。
如果您确定该Imei
只有一个ImeiInvoice
,则可以使用
i.mobileinv_imei.first().invoice
我不知道你的用例,但是,如果你需要在所有这些模型之间建立一对一的关系,我建议你使用一个可以为null的Imei
->ImeiInvoice
":
class Imei(models.Model):
...
invoice = models.ForeignKey(blank=True, null=True, to=ImeiInvoice)