Python 如何从django模型中获取单个字段?

Python 如何从django模型中获取单个字段?,python,django,python-3.x,django-1.10,Python,Django,Python 3.x,Django 1.10,在my django models.py中: class Agent1(models.Model): show_name = models.CharField(db_column='Show_Name', max_length=100,null=True) exhibiting_company_name = models.CharField(db_column='Exhibiting_Company_Name', max_length=100,null=True) # Field

在my django models.py中:

class Agent1(models.Model):
    show_name = models.CharField(db_column='Show_Name', max_length=100,null=True)
    exhibiting_company_name = models.CharField(db_column='Exhibiting_Company_Name', max_length=100,null=True) # Field name made lowercase.
    company_website = models.CharField(db_column='Company_Website', max_length=100,null=True)  # Field name made lowercase.
    company_generic_email = models.EmailField(db_column='Company_Generic_Email', max_length=100,null=True)  # Field name made lowercase.

class Agent2(models.Model):
    show_name = models.CharField(db_column='Show_Name', max_length=100,null=True)
    exhibiting_company_name = models.CharField(db_column='Exhibiting_Company_Name', max_length=100,null=True) # Field name made lowercase.
    company_website = models.CharField(db_column='Company_Website', max_length=100,null=True)  # Field name made lowercase.
    company_generic_email = models.EmailField(db_column='Company_Generic_Email', max_length=100,null=True)  # Field name made lowercase.
像这样,我有大约30多个模型这只是几个领域,我有超过20个领域

&在新的_data.html文件中,我有:

<form method="post"action="">{% csrf_token %}
{{ form.as_p}}
<input type="submit" name="" value="Submit">
</form>
{%csrf\u令牌%}
{{form.as_p}}
如何仅在html模板中显示例如show_name和Showing_company_name,而不在forms.py中创建自定义表单

有没有办法在
标记中单独调用我的模型字段,如下所示:

<form action="demo_form.asp">
   Show Name: <input type="text" name="sname"><br/>
   Company Name: <input type="text" name="cname"><br/>
  <input type="submit" value="Submit">
</form> 

显示名称:
公司名称:

如果我正确理解了问题,您只需要在模板中显示特定字段。为此,您可以迭代所有表单字段(请参阅),并仅显示具有特定名称的字段:

<form method="post" action="">
{% csrf_token %}
{% for field in form %}
    {% if field.name == "show_name" or field.name == "exhibiting_company_name" %}
        {{ field }}
    {% endif %}
{% endfor %}
<input type="submit" value="Submit">
</form> 

{%csrf_令牌%}
{%形式的字段为%}
{%if field.name==“show_name”或field.name==“exposing_company_name”%}
{{field}}
{%endif%}
{%endfor%}

如果您只想显示这些字段,这很容易:

<form method="post" action="">
    {{ form.show_name }}<br/>
    {{ form.exhibiting_company_name }}<br/> 
    <input type="submit" value="Submit">
</form> 

{{form.show_name}}
{{form.expensing_company_name}}
但是除非这些是唯一的必填字段,否则您的表单将无法验证,而且您也不知道原因,因为您没有显示错误消息

现在,您必须定义一个自定义表单。但实际上,使用
forms.ModelForm
,它只需要几行代码


现在来看一些完全不同的东西:有两个或多个模型具有相同的模式,并命名为“Model1”、“Model2、(…),“ModelN”是一种巨大的设计气味。如果它们具有相同的模式,那么它们就是一个单一的模型(以及数据库级别的一个表).

谢谢,太简单了,我没想过,谢谢你的帮助:)顺便说一句,这样做之后,它没有更新数据库中的数据,我怎么能这样做?@pratirupmukherjee尝试添加{field.errors}进入模板。这将显示在发布数据时发生的错误。这实际上是一个双WTF-首先,您在表单的字段上循环,您可以直接将其作为
表单获取。显示\u name
表单。显示\u company\u name
,因为如果表单有任何其他必填字段,它将不会验证(您将看不到错误,因为您既没有显示缺少的字段也没有显示
表单。错误
@bruno desthuillers真让我感到羞耻!我没有想到:(感谢您展示了正确的方式。这些表是基于用户的,它们不同。我的应用程序名为index,目前有1个MasterDB和其他代理表index Agent1添加更改代理2添加更改代理3添加更改Masterdbs添加更改”这些表是基于用户的“:它本身并不保证不同的模型-只需在
用户上添加一个foreignkey
(如果“user”是一个模型-否则只需将其设置为int或char字段,并使用硬编码值以一种或另一种方式标识“user”)。如果“different”的意思是“有一组通用的字段和方法,再加上额外的每用户字段或方法”(这意味着您必须为每个用户编写特定的代码),那么公共部分应该存在于一个基本应用程序中(作为抽象或具体的模型),每个用户的定制应该存在于每个用户的应用程序中。