Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django为一个模型表单返回两个单独的_Python_Django_Python 3.x_Django Models_Django Forms - Fatal编程技术网

Python Django为一个模型表单返回两个单独的

Python Django为一个模型表单返回两个单独的,python,django,python-3.x,django-models,django-forms,Python,Django,Python 3.x,Django Models,Django Forms,我有一个任务模型,其中包括任务和实体的外键: class Task(models.Model): task = models.CharField(max_length=500) entity = models.ForeignKey(Entity) 我有一个与任务中的一个外键相关的模型: class Entity(models.Model): entity = models.CharField(max_length=50) type = models.CharFi

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

class Task(models.Model):
    task = models.CharField(max_length=500)
    entity = models.ForeignKey(Entity)
我有一个与任务中的一个外键相关的模型:

class Entity(models.Model):
    entity = models.CharField(max_length=50)
    type = models.CharField(max_length=50)
    def __str__(self):
        return self.entity
任务
放置在模型表单中:

class TaskForm(ModelForm):
    class Meta:
        model = Task
        fields = [
            'task',
            'entity'
        ]
模板中显示的模型表单如下所示:

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

如何包含等价的
{{form.instance.type}
?这将涉及在同一模型形式中包含两个
\uuuu str\uuuu
表示。我已经看到在重写模型表单时使用了
label\u from\u instance
,但这似乎只适用于modelcoocefields。此外,它将字段呈现为小部件而不是文本(如
form.instance

在模板中,
form.instance.entity
是实例的相关
实体
。如果要显示
类型
字段,只需使用:

{{ form.instance.entity.type }}

要回答标题中的问题,每个模型只能有一个
\uuuu str\uuu
方法。您可以定义另一个返回字符串的方法或属性,但如果您只想显示
type
字段,则无需这样做。

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

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

    @property
    def entity_type(self):
        return '{}'.format(self.entity.type)
然后在模板中调用
{{form.instance.entity_type}}


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

是否希望
{{form.instance.entity.type}
?哇。我觉得我应该继续删除这个问题…谢谢,谢谢