【问题标题】:Foreign key not being recognized外键无法识别
【发布时间】:2018-11-18 04:11:41
【问题描述】:

我创建了两个模型。当我运行 makemigrations 时,我收到以下错误:

ERRORS:
userorders.UserCartItem: (fields.E336) The model is used as an intermediate model by 'userorders.UserCart.items', but it does not have a foreign key to 'UserCart' or 'UserService'.

models.py

class UserCartItem(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, default=None) 
    cart = models.ForeignKey("UserCart", on_delete=models.CASCADE)  
    quantity = models.PositiveIntegerField(default=1)
    line_item_total = models.DecimalField(max_digits=10, decimal_places=2)

    def __str__(self):
        return str(self.id)


class UserCart(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, default=None) 
    items = models.ManyToManyField(UserService, through=UserCartItem)          
    items_total = models.DecimalField(max_digits=50, decimal_places=2, default=0.00)

    def __str__(self):
        return str(self.id)

对问题所在有什么想法吗?我已将 UserCartItem 上的外键定义为 UserCart,但看起来它没有被识别。我应该指出,我理解当您将另一个模型识别为外键并且外键模型低于您正在使用的模型时,您必须将外键模型放在引号中,因此我使用引号在这一行:

models.ForeignKey("UserCart", on_delete=models.CASCADE) 

谢谢!

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    必须添加 default=None:

    models.ForeignKey("UserCart", on_delete=models.CASCADE, default=None) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      相关资源
      最近更新 更多