如何通过模型将更多信息放入Django?

购买者每次都从供应商那里购买一种产品类型(包括服务器产品)。我不知道如何在django admin中添加采购记录,其中包括购买日期,供应商名称,产品类型,产品名称及其数量。

class ProductSupplier(models.Model):
    product_supplier = models.CharField(max_length=50,unique=True,verbose_name="product supplier")

class ProductType(models.Model):
    product_type = models.CharField(max_length=50,verbose_name="product type")
    product_suppliers = models.ManyToManyField(ProductSupplier,through='BuyProducts')    

class Product(models.Model):
    product_name = models.CharField(max_length=50,verbose_name="product name")
    product_type = models.ForeignKey(ProductType,on_delete=models.CASCADE,verbose_name="product type")

class BuyProducts(models.Model):
    product_type = models.ForeignKey(ProductType,on_delete=models.CASCADE)
    product_supplier = models.ForeignKey(ProductSupplier,on_delete=models.CASCADE)
    date_bought = models.DateField()
    def __str__(self):
        return "bought %s from %s on %s" % (self.product_type,self.product_supplier,self.date_bought)

我可以在django admin中添加或编辑采购记录,其中包括购买日期,供应商名称和产品类型。但是,我无法添加或编辑产品名称及其数量。任何建议都非常欢迎。

像这样的sql表:

BuyProductType:     buy_product_type_id,product_type_id,供应商ID,购买日期

BuyProductQuantity:     buy_product_quantity_id,buy_product_type_id,product_id,数量

changshengccs 回答:如何通过模型将更多信息放入Django?

我已经基本解决了这个问题,方法是将带有ForeignKey的关系模型添加到直通模型中。

class BuyProductQuantity(models.Model):
    buy_product = models.ForeignKey(BuyProducts,on_delete=models.CASCADE)
    product_name = models.ForeignKey(Product,on_delete=models.CASCADE)
    product_quantity = models.IntegerField()

和这样的admin.py:

class BuyProductsInline(admin.TabularInline):
    model = BuyProducts
    extra = 2
class ProductTypeAdmin(admin.ModelAdmin):
    inlines = [BuyProductsInline]
    list_display = ('product_type',)
class BuyProductsAdmin(admin.ModelAdmin):
    list_display = ('buy_product','product_name','product_quantity')
admin.site.register(ProductType,ProductTypeAdmin)
admin.site.register(BuyProductQuantity,BuyProductsAdmin)

在ProductType管理员页面上,我可以更新BuyProducts信息。在BuyProductQuantity管理页面上,我可以选择一种buy_product并更新产品名称和数量。

但是,仍然存在问题。当我从下拉列表中选择一个buy_product时,在BuyProductQuantity管理页面上,我想根据所选产品类型过滤产品下拉列表。

本文链接:https://www.f2er.com/3132226.html

大家都在问