大家好,我是Django的新手(我刚刚完成了教程),但我想我理解它的基本概念。我在这里写作是因为我试图做某事&#34;困难&#34;因为我目前使用django和搜索互联网的经验并没有给我一个解决方案。我想要做的是根据另一个模型的条目数创建一个动态模型。更确切地说,我得到了以下模型:< / p>
class criteria(models.Model):
criteria_text = models.CharField(max_length=200)
monotonicity = models.CharField(max_length=1,choices=(('+','ASCEDING'),('-','DESCENDING')),default='+',verbose_name='Monotonicity')
worst = models.IntegerField(default=0)
best = models.IntegerField(default=0)
我想要做的是通过django管理面板创建我想要的所有条件模型实例,然后查询数据库中的所有creteria_text实例,并为每个criteria_text实例创建一个带有属性的模型。
因此,我想将以下标准添加到数据库中(这些是条件对象的criteria_text属性:颜色,重量,价格。
我想最终得到这样的模型:
class Alternative(models.Model):
Color = models.IntegerField(default=0)
Weight = models.IntegerField(default=0)
Price = models.IntegerField(default=0)
问题是,在我的应用程序中,这个必须发生很多次,所以每次有人根据不同的标准添加替代品时我都无法建立模型。
搜索后,我发现我可以使用以下格式定义动态模型:
attrs = {
'name': models.CharField(max_length=32),
'__module__': 'myapp.models'
}
Animal = type("Animal", (models.Model,), attrs)
所以问题是如何定义&#34; attrs&#34;基于获取数据库中所有条件的查询?我可以定义此动态模型与另一个模型的关系吗?如果用户添加更多条件,也应更新已创建的模型。
这样的事情可能吗? 如果是这样,请告诉我路径。
答案 0 :(得分:0)
我不认为定义动态模型是一个很好的解决方案(或任何地方,真的)。相反,您需要一个可以拥有与条件实例一样多的项目的关系。
可能是这样的:
class Alternative(models.Model):
name = models.CharField(...)
choices = models.ManyToManyField("Criteria", through="AlternativeChoice")
class AlternativeChoice(models.Model):
alternative = models.ForeignKey('Alternative')
criteria = models.ForeignKey('Criteria')
value = models.IntegerField(default=0)
真实逻辑将属于表单,您需要为每个条件条目创建选项,并根据相关标准验证AlternativeChoice。