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