2016-09-29 103 views
0

我使用Django 1.8.14。我有两个型号:Django。从表单对象访问模板中的外键字段

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 > 

在每个单选按钮的标签,我需要显示这两个字段值作为卡的外键的事件模型的“标题”和“日期”。现在标签只包含“标题”值。什么是最好的方式来做到这一点? 我试过{{cardform.instance.event.date}}但它不起作用。

回答

0

我找到了解决方案。

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) 
相关问题