2009-04-27 92 views
2

我有例如模型是這樣的:如何存儲在Django模型數據,而無需輸入字段

class Meeting(models.Model): 
    date = models.DateTimeField(default=datetime.datetime.now) 
    team = models.CharField(max_length=100) 

    class Meta: 
     verbose_name_plural = u'Meetings' 
     ordering = ['-date', 'team'] 

    def __unicode__(self): 
     return u'%s %s' % (self.date, self.team) 


class Entry(models.Model): 
    meeting = models.ForeignKey(Meeting, blank=True) 
    meeting_date = models.DateField(null=True) 
    description = models.TextField() 

    class Meta: 
     verbose_name_plural = u'Entries' 

    def __unicode__(self): 
     return self.title 

我有我控制與

class MyEntryAdminForm(forms.ModelForm): 
class Meta: 
    model = Entry 

我是輸入的表單獲得本次會議字段中的數據與

meeting = forms.ModelChoiceField(queryset=Meeting.objects.all(), empty_label=None) 

我想提取會議場的日期部分(我能管理這個)。此日期部分應該是meeting_date字段的輸入。 meeting_date字段在表單中沒有輸入字段,應該自動填充。 我不知道如何獲取此日期提取到meeting_date領域,以及如何將其存儲

在高清乾淨(個體經營)嘗試

cleaned_data['meeting_date'] = date_extract_from_meeting 

不起作用

任何幫助非常感謝

+1

您打算在將來某個時間更改meeting.date或entry.meeting_date嗎?如果沒有,那麼你應該使用entry.meeting.date而不是複製數據。 – tghw 2009-04-27 16:01:05

回答

5

可能有一種方法可以覆蓋save()方法並將日期放在該步驟中,但我找不到任何這樣做的例子。

,我知道肯定會的工作的一種方法是通過在提交= False來form.save(這樣實際的數據庫插入未發生的):

instance = form.save(commit=False) 

然後你可以設置會議日期和保存對象:

instance.meeting_date = instance.meeting.date 
instance.save() 

希望這會有所幫助。

+0

+1:我認爲這是爲什麼在Django中存在commmit = False的原因之一。 – 2009-04-27 16:35:16

相關問題