【问题标题】:How to show value of django field conditionaly from child or parent model如何从子模型或父模型有条件地显示 django 字段的值
【发布时间】:2019-08-27 06:51:25
【问题描述】:

我有以下父模型

class Parent(Model):

    value1 = models.CharField(max_length=50)
    value2 = models.CharField(max_length=50)
    .......

和子模型

class Child(Model)

     value1 = models.CharField(max_length=10, blank=True, null=True)
     value2 = models.CharField(max_length=10, blank=True, null=True)
     ...........

如何有条件地返回字段的值?

如果来自子字段的同名字段的值为无,我如何在父字段的模板(表格/列表或详细信息)中显示。

如果子字段的值不是无,则显示子字段的值。

我可以用同样的方式过滤数据(儿童)吗?


我应该使用一些抽象模型还是代理模型?怎么样?

【问题讨论】:

  • 如果两个模型相关,使用relationships
  • 确保子模型上有外键。

标签: python django model


【解决方案1】:

我添加了一些答案,因为我认为我没有准确地描述我的问题。

  1. 我需要创建一些抽象级别,其中顶级模型将包含一些“主要”字段

  2. 顶级的所有派生/子级都具有与此顶级相同的字段和一些更具体的字段。

  3. 如果其中一个子字段(来自顶级)未更改,则显示顶级字段,

  4. 如果发生变化,则显示来自子级的值。

  5. 如果顶层模型发生变化,所有未发生变化的子模型都将呈现顶层模型的数据。


我的想法是使用 ManyToOne 关系并且必须对 Parent 和 Child 建模,其中 child 将具有与 parent 相同的字段(数据重复)和一些额外的字段。

创建孩子后,我计划从父母那里复制重复字段的数据。

对于孩子上的每个重复字段,我计划添加布尔字段以检查字段是否已更改,并在保存子更改字段时将其相应地更改为 true。

当父保存发生时,如果子布尔值 (field_changed) 设置为 false,我计划添加一个额外的方法来覆盖子字段并复制父数据,否则不要覆盖。

有没有更好的方法?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 2016-11-06
    • 2017-07-24
    相关资源
    最近更新 更多