两种Django模型之间的相互关系

时间:2020-05-11 18:24:54

标签: django django-models foreign-keys manytomanyfield generic-foreign-key

(我想很简单)我需要这样一种情况:有许多配置文件,并且有许多合奏,并且每个配置文件必须能够成为一个或多个合奏的一部分。这是我的代码:

class Ensemble(models.Model):

    ensembleName = models.CharField(max_length=200)
    members = models.ManyToManyField('Profile', related_name='members')

    def __str__(self):
        return self.ensembleName

class Profile(models.Model):

    ensemble = models.ForeignKey(Ensemble, on_delete=models.CASCADE, blank=True, null=True)
[...]

一切正常,但在一定程度上。在Django管理中,我可以从“合奏”页面中选择其成员。我还可以从“个人资料”页面中选择一个与该个人资料所属的集合相似的页面。问题是:它们没有同步:如果我通过“配置文件”页面将配置文件添加到集成中,则这不会反映在“集成”页面中,反之亦然,即在“配置文件详细信息”页面中我不这样做。不会从“合奏”页面中看到我之前分配该配置文件的合奏。

我的表单

class ProfileUpdateForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ('image', 'role', 'skills', 'gender', etc...)

class EnsemblesForm(forms.ModelForm):

    class Meta:
        model = Ensemble
        fields = ('ensemble_name',)

    def __init__(self, *args, **kwargs):
        super(EnsemblesForm, self).__init__(*args, **kwargs)
        self.fields['ensemble_name'].queryset = (obj for obj in Ensemble.objects.all()) #This doesn't output anything

0 个答案:

没有答案