2009-04-27 34 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

相关问题