如何在没有输入字段的情况下在Django Model中存储数据

时间:2009-04-27 15:37:11

标签: django django-models django-admin django-forms

我有这样的模型:

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字段在表单中没有输入字段,应自动填充。 我不知道如何将这个日期提取到session_date字段以及如何存储

def清理尝试(自我)

cleaned_data['meeting_date'] = date_extract_from_meeting 

不起作用

非常感谢任何帮助

1 个答案:

答案 0 :(得分:5)

可能有一种方法可以覆盖表单save()方法并将日期放在该步骤中,但我找不到任何这样做的例子。

我知道可以肯定的方法是将commit = False传递给form.save(这样实际的数据库插入还没有发生):

instance = form.save(commit=False)

然后您可以设置会议日期并保存对象:

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

希望这有帮助。