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)
Вернуться на верх