Заполнение поля внешнего ключа в поле формы связанной записью в Django

У меня есть 2 модели Office & Meeting.

class Office(models.Model):

name = models.CharField(verbose_name=u"name",max_length=255)

class Meeting(models.Model):

    meeting_office = models.ForeignKey(Registration,verbose_name=u"Office", on_delete=models.DO_NOTHING, related_name='meeting_office')
date = models.DateField(verbose_name=u"Date", null=False, blank=False)

У меня есть форма, которая успешно создает пустую встречу

 class MeetingForm(ModelForm):
  class Meta:
    model = Registration
    fields = (
        'date',
        'meeting_office'
    )
    widgets = {
        'date' :forms.TextInput(attrs={'class': 'form-control'}),
        'meeting_office' :forms.Select(attrs={'class': 'form-control'}),

Когда я хочу иметь предварительно заполненную форму, у меня есть представление, которое приведено ниже

def office_add_meeting(request, office_id):
    office = Office.objects.get(pk=office_id)
    form = MeetingForm(request.POST or None)

    if form.is_valid():
        form.instance.meeting_office = office       
        form.save()
        messages.success(request, "Insert Successfull")
        return HttpResponseRedirect('/office_main')

return render(request, 
            'Office/meeting-form.html',
            {"form": form,
            "office_id": office_id}) 

Но форма не заполняет поле внешнего ключа. Подтвердил, что office_id был успешно передан в представление. Я не понимаю, почему форма не использует определенный экземпляр. Есть идеи, что может быть причиной этого? Или есть лучший способ?

Для задания начальных полей формы можно использовать словарь, соответствующий именам атрибутов полей.

Попробуйте следующее:

form = MeetingForm(initial={"meeting_office":your_office})

Для редактирования существующих форм вы также можете использовать:

my_meeting = Meeting.objects.all().first() # Example of model
MeetingForm(instance=my_meeting) # Also use instance where you're accepting the form.
Вернуться на верх