如何使用多个外键正确设置模型

时间:2019-04-22 12:01:15

标签: django django-models django-forms django-views

我正在制作一个数字菜单,您可以在这里订购。但是,在正确设置表单和视图时遇到了一些麻烦。

该订单有两个外键。 FKtable是通过GET获得的。但是,FKmenuitem是问题所在。

Menuitem具有FKitem的外键,这意味着通过发布,必须先创建Menuitem对象,然后才能创建Order对象。

我不确定应该如何正确处理视图中的逻辑。

这是图片中的模型。

class Table(models.Model):
    number = models.IntegerField(blank=False)

    def __str__(self):
        return f'Tafel nummer {self.number}'


class Category(models.Model):
    category_name = models.CharField(max_length=255)

    def __str__(self):
        return self.category_name


class Item(models.Model):
    item_name = models.CharField(max_length=255)
    item_price = models.DecimalField(max_digits=5, decimal_places=2)
    item_description = models.TextField(max_length=255)
    FKcategory = models.ForeignKey(Category, on_delete=models.CASCADE)

    def __str__(self):
        return self.item_name


class Menuitem(models.Model):
    FKitem = models.ForeignKey(Item, on_delete=models.CASCADE)
    quantity = models.IntegerField()

    def __str__(self):
        return f'{self.FKitem.item_name} - {self.quantity}'


class Order(models.Model):
    FKtable = models.ForeignKey(Table, on_delete=models.CASCADE)
    FKmenuitem = models.ManyToManyField(Menuitem)
    prepped = models.BooleanField(default=False)
    delivered = models.BooleanField(default=False)
    paid = models.BooleanField(default=False)

    def __str__(self):
        return f' Bestelling voor {self.FKtable}'

0 个答案:

没有答案