有错误消息
order = models.ForeignKey(Order, on_delete=models.CASCADE)
NameError: name 'Order' is not defined
因此,我怎么做一个类将缺少课程的cuz低于当前阅读课程,以便缺少课程.我该如何解决这个问题?我读过多对多功能,可能解决了这个问题吗?
class Items(models.Model):
    name = models.CharField(max_length=10)
    def __str__(self):
        return self.name    
class OrderedItem(models.Model):
    items = models.ForeignKey(Items, on_delete=models.CASCADE)
    order = models.ForeignKey(Order, on_delete=models.CASCADE)
    amount = models.IntegerField()
    def __str__(self):
        return self.items
class Order(models.Model):
    #clientID
    orderedItem = models.ForeignKey(OrderedItem, on_delete=models.CASCADE)
    #truckId Foreign key till truck
    created = models.DateTimeField(auto_now=False, auto_now_add=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    emergency = models.BooleanField(default=False)
    status = models.IntegerField()
    #building
    #floor
    def __str__(self):
        return self.id
bak*_*kal 13
当发生这种情况时,我通常会使用所谓的完全限定的模型字符串,这是一个花哨的术语,代表模型的字符串和包含应用程序的格式'app_label.ModelName'
例如,如果您的模型是Order,则模型字符串名称将是字符串'Order'
所以你已经可以做到:
order = models.ForeignKey('Order', on_delete=models.CASCADE)
有了上述,Django将'Order'在同一个应用程序中寻找模型.如果您尚未定义它,也可以,只要它已定义.
如果该模型恰好来自不同的应用程序,它将是:
order = models.ForeignKey('appname.Order', on_delete=models.CASCADE)
因为Order指向OrderItems和OrderItems指向Order您与Django为您生成的相关查询related_name='+'发生冲突.您可以禁用以下内容:
order = models.ForeignKey('Order', on_delete=models.CASCADE, related_name='+')
由于OrderedItem已经"属于"的Order,有一个在其从一个ForeignKey没有点Order到OrderedItem,你可以只是将其删除,而不是处理上述冲突.
所以你拥有的将是这样的
Item
Order
OrderedItem
    + FK(Item)
    + FK(Order)
一种不涉及引用尚未定义的模型的设计:)