2

たとえば、次のようなモデルがあります。

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 

動作しません

どんな助けでも大歓迎です

4

1 に答える 1

7

フォームのsave()メソッドをオーバーライドして、そのステップで日付を入力する方法はおそらくありますが、これを行う例は見つかりません。

確実に機能することがわかっている方法は、commit = Falseをform.saveに渡すことです(この方法では、実際のデータベースの挿入はまだ行われません)。

instance = form.save(commit=False)

次に、会議の日付を設定してオブジェクトを保存できます。

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

お役に立てれば。

于 2009-04-27T15:55:28.087 に答える