我有一个包含名称,描述,货币,价格,供应商和图像字段的产品模型,并且我正在尝试实施订购商品,这样做有点麻烦。
基本上,我想要的是能够在管理员中访问Orders模型并添加订单号,客户名称(我已经实现了这两个)以及一些产品,每个产品都有数量。
# models.py
from django.db import models
class Vendor(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
class Product(models.Model):
currencies = [
('$', "US Dollars ($)"),
]
name = models.CharField(max_length=40)
description = models.TextField()
currency = models.CharField(max_length=5, choices=currencies, default="$")
price = models.DecimalField(max_digits=10, decimal_places=2)
vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE)
image = models.ImageField(default="not_found.jpg")
def __str__(self):
return self.name
class Customer(models.Model):
name = models.CharField(max_length=30)
date_of_birth = models.DateField()
def __str__(self):
return self.name
class Order(models.Model):
order_number = models.CharField(max_length=20)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
我还有其他方法可以实现此目的吗?还是我受第二种解决方案的困扰?这样做并不可怕,但我宁愿避免这样做,并能够在订单页面上添加商品
对不起,我听起来像乞I。我真的不是,但我不能说出好听的句子
使用我提到的第二个解决方案,我创建了一个名为ProductInstance的类,然后将其重命名为OrderProduct,并创建了以下字段:
order
类具有以下字段:
然后,我在admin.py中添加了以下内容:
# admin.py
...
class OrderInlines(admin.TabularInline):
model = OrderProduct
fk_name = "order"
extra = 1
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
fields = ('order_number', "customer",)
inlines = (OrderInlines,)