ManyToManyField In HTML



有人能让我知道正确的方式来显示已在manymany数据字段中输入的值吗?

在我的项目中,承包商可以有多个行业或技能,这应该在贸易中输入场。

class SubTrade(models.Model):
strade = models.CharField("Trade", max_length=255)
def __str__(self):
return self.strade
def get_absolute_url(self):
return reverse ("trade_full", kwargs={"pk": self.id})

class SubContractor(models.Model):
nameF = models.CharField("First Name", max_length=255, blank = True, null = True)
nameL = models.CharField("Last Name", max_length=255, blank = True, null = True)
nameN = models.CharField("Nickname", max_length=255, blank = True, null = True)
trade = models.ManyToManyField('SubTrade')
phone = models.CharField("Phone", max_length=255, blank = True, null = True)
email = models.EmailField("Email", max_length=254, blank = True, null = True)
address = models.CharField("Address", max_length=255, blank = True, null = True)
dateC = models.DateTimeField("Date Created", auto_now_add=True)
dateU = models.DateTimeField("Last Updated", auto_now=True)
note = models.TextField("Notes",  blank = True, null = True)
def __str__(self):
return '%s %s' % (self.nameF, self.nameL)
def get_absolute_url(self):
return reverse ("contractor_full", kwargs={"pk": self.id})

这是我的观点。

class SubContractorCreateView(CreateView):
model = SubContractor
template_name = "project/contractoradd.html"
fields = ['nameF', 'nameL', 'nameN', 'trade', 'address', 'phone', 'email', 'note']
def form_valid(self, form):
return super().form_valid(form)
这是我的HTML代码
{% for contractor in contractor %}
Last Name: {{contractor.nameL}}
<br>
Trade: {{contractor.trade}}
{% endfor %}
这是我的HTML输出
Last Name: Piper
Trade: project.SubTrade.None

如有任何帮助,不胜感激。

您可以简单地使用join过滤器

{% for contractor in contractor %}
Last Name: {{contractor.nameL}}
<br>
Trade: {{ contractor.trade.all|join:", " }}
{% endfor %}

或与迭代:

{% for contractor in contractor %}
Last Name: {{contractor.nameL}}
<br>
Trade: {% for trade in contractor.trade.all %}{{ trade.strade }}{% if not forloop.last %},{% endif %}{% endfor %}
{% endfor %}

参见访问方法调用

最新更新