Django model.py多对多错误查询冲突



我正在尝试创建我的模型.py与2表之间的多对多关系,按照Django的做法,如下所示:

class Options(models.Model):
# Many to many relationship with Payment
OPTIONS_CHOICES = (
('yearly', 'YEARLY'),
('bi-yearly', 'BI-YEARLY'),
('quarterly', 'QUARTERLY'),
('monthly', 'MONTHLY'),
('weekly', 'WEEKLY'),
('daily', 'DAILY'))
can_be_paid_yearly = models.CharField(max_length=25, choices=OPTIONS_CHOICES, default='yearly')
payment = models.ManyToManyField('Payment', through='PaymentOptions')
def __str__(self):
return self.can_be_paid_yearly

class Payment(models.Model):
# Many to many relationship with Options
price = models.PositiveIntegerField()
deposit = models.PositiveIntegerField()
options = models.ManyToManyField('Options', through='PaymentOptions')
def __str__(self):
return self.price, self.deposit

class PaymentOptions(models.Model):
payment = models.ForeignKey('Payment', on_delete=models.SET)
options = models.ForeignKey('Options', on_delete=models.CASCADE)

这是我得到的错误:

ERROR:
rental.Options.payment: (fields.E303) Reverse query name for 'Options.payment' clashes with field name 'Payment.options'.
HINT: Rename field 'Payment.options', or add/change a related_name argument to the definition for field 'Options.payment'.
rental.Payment.options: (fields.E303) Reverse query name for 'Payment.options' clashes with field name 'Options.payment'.
HINT: Rename field 'Options.payment', or add/change a related_name argument to the definition for field 'Payment.options'.

如何修复这个错误,我做错了什么?

错误是从ManyToManyField:

翻转回调
class Options(models.Model):
# Many to many relationship with Payment
OPTIONS_CHOICES = (
('yearly', 'YEARLY'),
('bi-yearly', 'BI-YEARLY'),
('quarterly', 'QUARTERLY'),
('monthly', 'MONTHLY'),
('weekly', 'WEEKLY'),
('daily', 'DAILY'))
can_be_paid_yearly = models.CharField(max_length=25, choices=OPTIONS_CHOICES, default='yearly')
payment = models.ManyToManyField('Options', through='PaymentOptions')
def __str__(self):
return self.can_be_paid_yearly

class Payment(models.Model):
# One to many relationship with Residential, Commercial
price = models.PositiveIntegerField()
deposit = models.PositiveIntegerField()
options = models.ManyToManyField('Payment', through='PaymentOptions')
def __str__(self):
return self.price, self.deposit

class PaymentOptions(models.Model):
payment = models.ForeignKey('Payment', on_delete=models.SET)
options = models.ForeignKey('Options', on_delete=models.CASCADE)

最新更新