Como armazenar dados em Django modelo sem ter um campo de entrada

votos
2

Tenho modelo, por exemplo, como este:

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

Estou tendo uma forma que eu estou controlando a entrada com

class MyEntryAdminForm(forms.ModelForm):
class Meta:
    model = Entry

Estou recebendo os dados para o campo reunião com

meeting = forms.ModelChoiceField(queryset=Meeting.objects.all(), empty_label=None)

Eu quero extrair a parte da data do campo de reunião (eu sou capaz de gerenciar isso). Esta parte data deve ser a entrada para o campo meeting_date. O campo meeting_date não tem campo de entrada no formulário e deve ser preenchido automaticamente. Eu não sei como conseguir este extrato data no campo meeting_date e como armazená-la

A tentativa no def limpo (auto)

cleaned_data['meeting_date'] = date_extract_from_meeting 

não funciona

Qualquer ajuda é muito apreciada

Publicado 27/04/2009 em 16:37
fonte usuário
Em outras línguas...                            


1 respostas

votos
5

Há provavelmente uma maneira de substituir a forma método Save () e colocar a data em pelo que passo, mas não consigo encontrar qualquer exemplos de fazer isso.

Uma maneira que eu sei que funcionaria com certeza é para passar no commit = False para form.save (desta forma a inserção de banco de dados real não acontece até o momento):

instance = form.save(commit=False)

Em seguida, você pode definir a data da reunião e salvar o objeto:

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

Espero que isto ajude.

Respondeu 27/04/2009 em 16:55
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more