我有两个具有ForeignKey关系的简单模型,类别和对象,比如说(对象具有FK属性到类别),在管理中,我需要根据实际选择的类别分配另一个对象属性值的值。
示例:
我将在Django管理界面类别中创建属性cat_name="A“,以及使用cat_name="B”创建另一个类别。现在,在对象创建表单中,我可以在表单"A“或"B”类中选择,基于该选择,我需要存储在Object.description属性中,类似于“所选类别是B”。
我尝试过几种方法,但都以这样一个事实为结束:类别对象的实例必须以某种方式传递给对象创建表单。
谢谢
发布于 2015-12-10 01:04:33
在保存数据之前,您可以通过重写save函数来做到这一点:
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)发布于 2015-12-13 19:57:37
好的,最后我找到了可以接受的解决方案。在保存类别对象时,我正在创建相关对象,并将其属性传递给对象。有点像
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)我注意到,创建这种自动方式的对象必须有空的(如果允许的话)或具有属性的机器,但这只是我的一个小缺陷,我可以通过公共管理表单进行任何更新。
https://stackoverflow.com/questions/34189856
复制相似问题