首页 > 解决方案 > 与具有相同反向访问器的同一模型的一对一和一对多关系

问题描述

我有一个与 OrderDate 模型具有一对多关系的订单模型。现在我想在订单上有一个名为“chosen_date”的附加字段,与同一个 OrderDate 模型具有一对一的关系。问题是我在 OrderDate 的关系都有名称“订单”,这会发生冲突。如何在 OrderDate 模型上不添加像“Order_2”这样的新字段来解决这个问题?

这是我的模型:

class Order(TimeStampedModel):
    chosen_date = models.OneToOneField('OrderDate', on_delete=models.CASCADE, blank=True, null=True)
class OrderDate(TimeStampedModel):
    order = models.ForeignKey(Order, related_name='dates', on_delete=models.CASCADE)
    date = models.DateField()
    morning = models.BooleanField(default=False)
    noon = models.BooleanField(default=False)
    evening = models.BooleanField(default=False)

标签: pythondjangodjango-rest-framework

解决方案


related_name为指定OneToOneField

class Order(TimeStampedModel):
    chosen_date = models.OneToOneField(
        'OrderDate',
        related_name='order_picked',
        on_delete=models.CASCADE,
        blank=True,
        null=True
    )

推荐阅读