姜戈。从表单对象访问模板中的外键字段
Posted
技术标签:
【中文标题】姜戈。从表单对象访问模板中的外键字段【英文标题】:Django. Access the foreign key fields in the template from a form object 【发布时间】:2017-02-08 10:19:51 【问题描述】:我使用 Django 1.8.14。我有两个模型:
class Event(models.Model):
title = models.CharField(max_length=255,)
date = models.DateTimeField()
...
def __unicode__(self):
return self.title
class Card(models.Model):
user = models.ForeignKey(MyUser, related_name="user")
event = models.ForeignKey(Event,)
...
卡片模型形式:
class CardForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CardForm, self).__init__(*args, **kwargs)
self.fields['event'].empty_label = None
class Meta:
model = Card
fields = ('event', )
widgets = 'event': forms.Radioselect,
我这样渲染表单:
<form method="POST">
% csrf_token %
% for choice in cardform.event %
choice.tag
choice.choice_label
% endfor %
</form >
在每个单选按钮的标签中,我需要显示事件模型的字段值“标题”和“日期”,即卡片的 ForeignKey。现在标签只包含“title”值。最好的方法是什么? 我试过 cardform.instance.event.date 但它不起作用。
【问题讨论】:
【参考方案1】:我找到了解决办法。
class CardForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CardForm, self).__init__(*args, **kwargs)
self.fields['event'].label_from_instance = lambda obj: "%s %s" % (obj.title, obj.date)
【讨论】:
以上是关于姜戈。从表单对象访问模板中的外键字段的主要内容,如果未能解决你的问题,请参考以下文章
如何在 html 模板中显示 nut、date 字段?如何访问 html 模板中的外键字段?