python - Django 为模型表单返回两个单独的 __str__

标签 python django python-3.x django-models django-forms

我有一个 Task 模型,其中包括任务和实体的外键:

class Task(models.Model):
    task = models.CharField(max_length=500)
    entity = models.ForeignKey(Entity)

我有一个模型与 Task 中的一个外键相关:

class Entity(models.Model):
    entity = models.CharField(max_length=50)
    type = models.CharField(max_length=50)
    def __str__(self):
        return self.entity

Task 被放入模型表单中:

class TaskForm(ModelForm):
    class Meta:
        model = Task
        fields = [
            'task',
            'entity'
        ]

Model Form在模板中的显示方式是这样的:

{{ form.task }}
{{ form.instance.entity }}

我如何包含 {{ form.instance.type }} 的等价物?这将涉及以某种方式在同一模型形式中包含两个 __str__ 表示。我已经看到 label_from_instance 用于覆盖模型表单,但这看起来只有 ModelChoiceFields 才有可能。此外,它会将字段呈现为小部件而不是文本(如 form.instance)。

最佳答案

Django 中的模型只是类。您还可以在 Task 类中为 type 创建属性。

class Task(models.Mode):
    ... your code ...

    @property
    def entity_type(self):
        return '{}'.format(self.entity.type)

然后您将在模板中调用 {{ form.instance.entity_type }}

在这种情况下它有点矫枉过正,但在更复杂的情况下它可能是一种选择。

关于python - Django 为模型表单返回两个单独的 __str__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47639263/

相关文章:

django - 使用 Django 和 Tastypie 返回随机项目

python - JupyterLab : Run all cells below

python - 在 Python 中将日期作为一行数据透视

python - os x 10.8.5 上的 Celery WorkerLostError

python - Dataframe.str 失败,因为整列都是空白

Python 3.4 多重处理,代码不会超过循环(包含队列)

python - Pandas :如何合并到多列上的数据框?

python - TensorFlow:模块 '__main__' 没有属性 'main'

Python - 将图像转换为一串像素值

django - 在 Django 中执行 PostgreSql 查询