首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django -动态模型参数值

Django -动态模型参数值
EN

Stack Overflow用户
提问于 2015-12-09 22:04:15
回答 2查看 311关注 0票数 0

我有两个具有ForeignKey关系的简单模型,类别和对象,比如说(对象具有FK属性到类别),在管理中,我需要根据实际选择的类别分配另一个对象属性值的值。

示例:

我将在Django管理界面类别中创建属性cat_name="A“,以及使用cat_name="B”创建另一个类别。现在,在对象创建表单中,我可以在表单"A“或"B”类中选择,基于该选择,我需要存储在Object.description属性中,类似于“所选类别是B”。

我尝试过几种方法,但都以这样一个事实为结束:类别对象的实例必须以某种方式传递给对象创建表单。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-12-10 01:04:33

在保存数据之前,您可以通过重写save函数来做到这一点:

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2015-12-13 19:57:37

好的,最后我找到了可以接受的解决方案。在保存类别对象时,我正在创建相关对象,并将其属性传递给对象。有点像

代码语言:javascript
复制
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)

我注意到,创建这种自动方式的对象必须有空的(如果允许的话)或具有属性的机器,但这只是我的一个小缺陷,我可以通过公共管理表单进行任何更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34189856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档