2016-09-29 104 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) 
相關問題