Как хранить данные в Django Model без поля ввода - PullRequest
2 голосов
/ 27 апреля 2009

У меня есть модель, например, такая:

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 и как ее сохранить

Попытка в def clean (self)

cleaned_data['meeting_date'] = date_extract_from_meeting 

не работает

Любая помощь высоко ценится

1 Ответ

5 голосов
/ 27 апреля 2009

Возможно, есть способ переопределить метод save () формы и указать дату на этом шаге, но я не могу найти никаких примеров для этого.

Способ, который, я знаю, сработает наверняка, - это передать commit = False в form.save (таким образом, фактическая вставка в базу данных еще не происходит):

instance = form.save(commit=False)

Затем вы можете установить дату встречи и сохранить объект:

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

Надеюсь, это поможет.

...