AttributeError: объект 'RelatedManager' не имеет атрибута '' обратное соединение
Я пытаюсь реализовать обратное соединение, но получаю эту ошибку :
'admin':i.mobileinv_imei.invoice.seller.username, AttributeError: объект 'RelatedManager' не имеет атрибута 'invoice'
вот мой models.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
модели, вот мой views.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
является RelatedManager
для ImeiInvoice
. Это не единичный объект ImeiInvoice
. Похоже, вы пытаетесь использовать ForeignKey
для отношения один-к-одному, когда оно является отношением многие-к-одному.
Если вы уверены, что для данного ImeiInvoice
существует только один Imei
, вы можете использовать
i.mobileinv_imei.first().invoice
Я не знаю вашего случая использования, но если вам нужно иметь отношения один-к-одному между всеми этими моделями, я предлагаю вам использовать nullable Imei
-> ImeiInvoice
":
class Imei(models.Model):
...
invoice = models.ForeignKey(blank=True, null=True, to=ImeiInvoice)