Как настроить встроенные наборы форм django для отображения отношений «многие ко многим» в шаблонах? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть две модели:

class Profile(models.Model):
    profileName = models.CharField(max_length=50)

class RelatedProfile(models.Model):
    relatedProf = models.ManyToManyField(UseCaseProfile, through='UseCaseProfileRelatedUseCase')
    relationType= models.CharField(max_length=3, choices=RELATION_CHOICE)

Следуя документации Django о связях ManyToMany, я создал эту таблицу ниже:

class ProfileRelated(models.Model):
    prof = models.ForeignKey(Profile, on_delete=models.CASCADE)
    related = models.ForeignKey(RelatedProfile, on_delete=models.CASCADE)

Я собираюсь установить inlineformset гдеродительской моделью является профиль, а дочерней моделью - RelatedProfile.Поэтому я сделал следующее:

forms.py

class ProfileForm(ModelForm):
    class Meta:
        model = Profile
        fields='__all__'
class RelatedUCForm(ModelForm):
    class Meta:
        model = RelatedUseCase
        fields = '__all__'
RelatedUCFormSet = inlineformset_factory(Profile, RelatedProfile.relatedProf.through)

views.py (я пропустил ненужный код)

class ProfileUpdateView(UpdateView):
    template_name = "some.html"
    model = Profile
    form_class = ProfileForm
    def get_context_data(self, **kwargs):
        context = super(ProfileUpdateView, self).get_context_data(**kwargs)
        if self.request.POST:
            context['relatedProfile_form'] = RelatedUCFormSet(self.request.POST, self.request.FILES, instance=self.object, prefix='related')
        else:
            context['relatedProfile_form'] = RelatedUCFormSet(instance=self.object, prefix='related')
        return context

На основе моделей, форми просмотрите, я хочу отобразить веб-страницу следующим образом:

<code><pre>
Profile
     profileName: Textfield
Related
     Profile: Dropdown with related Profile
     :relationType: choicefield

Однако, когда я отображаю свою веб-страницу, я не получаю раскрывающийся список, чтобы выбрать, какой профиль я хочуотноситься к родительскому профилю.В целом, моя проблема заключается в том, чтобы в раскрывающемся списке «Связанные» отображался список профилей, из которых я мог выбрать.

...