首页 > 解决方案 > 显示来自模型 Django 的唯一值的表单

问题描述

学习 Django .. 我正在尝试设置以下内容,需要您的专家建议以使其更好..

我创建了一个模型,并在其上形成以显示数据..在代码之后我有两个问题需要您的建议:)

模型:

class profilestable(models.Model):
   choices = [
   ('Active','Active'),
   ('Inactive','Inactive')
   ]
   Category = models.CharField(max_length=100)
   SubCategory = models.CharField(max_length=100)
   product_name = models.CharField(max_length=100)
   Status = models.ChoiceField(max_length=20,choices=choices)

   def __str__(self):
      return self.Category

class Userlist(models.Model):
       User = models.CharField(max_length=100)
       Categorygroup = models.ForeignKey(profilestable,null=true,on_delete=models.SET_NULL)
    
       def __str__(self):
          return self.User

形式:

class userprofileform(forms.ModelForm):
   model = Userlist
   Fields = ('User','CategoryGroup')

def __init__(self,*args,**kwargs):
   super(userprofileform,self).__init__(*args,**kwargs)

profiletable 模型中的样本数据:

在此处输入图像描述

查询:

  1. 我想将类别、子类别和产品名称作为下拉菜单添加到表单中,但是我不确定如何访问要在表单上显示的每个元素。因为我要返回该值,所以我只能提取类别。
  2. 该列表当前有很多重复值,是否可以在下拉列表中仅显示唯一值。
  3. 此外,是否可以使其成为多选和依赖级联下拉菜单

请您帮助建议/指导实施此类表格。

太感谢了。

标签: pythondjangodjango-modelsdjango-forms

解决方案


该结构需要进行一些更改,例如category应该是 的父级sub-category,然后product位于 下方,因此sub-category最好为 和 在这种关系中创建一个单独的Category模型:Sub-categoryProduct

Category > Sub-category > Product由于子类别和产品与其父级的关系不是唯一的,因此请使用ForeignKey字段将它们连接起来。

我还看到您的sample data许多产品都缩成一排,这在任何缩放、性能或订单方面都不好。

但是我看不到您Userlist模型的用例。

完成上述操作后,请参考此答案来创建您的下拉菜单,尽管最后不需要 distinct,因为创建单独的模型Category将避免重复Category名称。然后在表单提交时,您查询正确的Category实例Sub-Category并将其分配给ForeignKey表单的字段。


推荐阅读