Django - 动态模型参数值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django - 动态模型参数值相关的知识,希望对你有一定的参考价值。
我有两个简单的模型与ForeignKey关系,类和对象说(对象有FK属性为类别)和管理我需要根据实际选择的类别分配另一个对象属性值的值。
例:
我将在Django Admin界面类别中创建属性cat_name =“A”和另一个类别cat_name =“B”。现在在对象创建表单中,我可以选择“A”或“B”类别的形式,并根据该选择我需要存储在Object.description属性中,如“Selected category is B”
我已经尝试了几种方法但最终都是因为Category对象的实例必须以某种方式传递给Object创建表单。
谢谢
答案
在通过覆盖保存功能保存数据之前执行此操作:
class ObjectModel(models.Model):
category = models.ForeignKey(# details goes here)
..... # other fields goes here
def save(self, *args, **kwargs):
if self.category.name == 'A':
self.description = ...
elif self.category.name == 'B':
.... # different behavior etc
super(ObjectModel, self).save(*args, **kwargs)
另一答案
好的,最终我找到了可以接受的解决方案。我正在保存Category对象时将相关对象创建并将其属性传递给对象。就像是
class Category(models.Model):
name = models.CharField(max_length=10)
...
def save(self, *args, **kwargs):
super(Category, self).save(*args, **kwargs)
Object.objects.create(name=self.name)
唯一的缺点我注意到创建这种自动化方式的对象必须有空(如果允许)或机器生成的属性,但这对我来说只是一个小缺陷,我可以通过常用的管理表单进行任何更新。
以上是关于Django - 动态模型参数值的主要内容,如果未能解决你的问题,请参考以下文章
Cg入门19:Fragment shader - 片段级模型动态变色
使用 Django,如何在模板中动态设置 ModelForm 字段值?