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

如何在没有输入字段的情况下在Django模型中存储数据,django,django-models,django-admin,django-forms,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'] d

例如,我有这样的模型:

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字段以及如何存储它

def清洁(自我)中的尝试

不起作用


非常感谢您的帮助

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

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

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

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

希望这能有所帮助。

您是否计划在将来某个时候更改meeting.date或entry.meeting\u日期?如果没有,那么您应该使用entry.meeting.date,而不是复制数据。+1:我认为这是Django中出现commmit=False的原因之一。看起来不错,但我仍然迷路。这个在哪里。它是在MyEntryAdminForm(forms.ModelForm)中,还是在EntryAdmin(admin.ModelAdmin)类中:我得到了:def save_model(self,request,obj,form,change):obj.meeting_date=str(obj.meeting)[0:16]obj.save()有效。谢谢你的帮助
instance = form.save(commit=False)
instance.meeting_date = instance.meeting.date
instance.save()