Python Django can';不创建对象-相关的ObjectDoesNotExist

Python Django can';不创建对象-相关的ObjectDoesNotExist,python,django,django-models,Python,Django,Django Models,我有一个型号付款和型号发票。模型发票有一个属性payment,它是一个OneToOneField字段,具有null=True和blank=True 问题是Django不允许我创建付款 >>> Payment.objects.create(total_price=10) RelatedObjectDoesNotExist: Payment has no invoice. >>> Payment.objects.create(total_price=10,in

我有一个型号
付款
和型号
发票
。模型发票有一个属性
payment
,它是一个
OneToOneField
字段,具有
null=True
blank=True

问题是Django不允许我创建付款

>>> Payment.objects.create(total_price=10)

RelatedObjectDoesNotExist: Payment has no invoice.

>>> Payment.objects.create(total_price=10,invoice=Invoice.objects.first())

TypeError: 'invoice' is an invalid keyword argument for this function
我不明白为什么会这样。我希望
Invoice
有一个可选参数
payment
,反之亦然,因为
payment
对象是在收到付款后创建的

class Invoice(models.Model):
    identificator = models.UUIDField(default=uuid.uuid4, editable=False)
    order = models.OneToOneField('Job', related_name='invoice', on_delete=models.CASCADE)
    price_per_word = models.DecimalField(null=True, blank=True, decimal_places=2, max_digits=12)
    translator_revenue_in_percent = models.FloatField(null=True, blank=True)
    discount_in_percent = models.FloatField(default=0)
    final_price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)
    estimated_price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)
    paid = models.BooleanField(default=False)
    payment = models.OneToOneField('Payment', related_name='invoice', null=True, blank=True)
    __original_paid = None

    def save(self, *args, **kwargs):

        if not self.__original_paid and self.paid:
            self.__original_paid = True
            if self.order.translator:
                EventHandler.order_has_been_paid(self.order)

        super(Invoice, self).save(*args, **kwargs)

class Payment(models.Model):
    payment_identifier = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    total_price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)

    def save(self,*args,**kwargs):
        EventHandler.order_has_been_paid(self.invoice.order)
        super(Payment,self).save(*args,**kwargs)

您知道问题出在哪里吗?

您覆盖了
付款
模型的
保存
方法,以访问
自发票
,该发票显然不存在,因为尚未保存付款,少谈发票。

您覆盖了
付款
模型的
保存
方法,以访问
自我。发票
显然不存在,因为尚未保存付款,少谈发票