【发布时间】:2020-11-08 20:53:14
【问题描述】:
如何改进 StoreDefaultAudience?
John's Store - 受众:受众 A、受众 B、受众 C
妮可的商店 - 受众:受众 D、受众 E
对于 StoreDefaultAudience,John's Store 应该只能选择 Audience A、Audience B、Audience C 作为默认受众
对于 StoreDefaultAudience,Nicole 的商店应该只能选择 Audience D、Audience E 作为默认受众
class Store(models.Model):
store_name = models.CharField(max_length=50)
class Audience(models.Model):
audience_name = models.CharField(max_length=50)
store = models.ForeignKey(Store, on_delete=models.CASCADE)
# only one StoreDefaultAudience should be allowed per Store
# the default audiences should only be that stores audiences
class StoreDefaultAudience(models.Model)
default_audience = models.ForeignKey(Audience, on_delete=models.CASCADE, unique=True)
store = models.ForeignKey(Store, on_delete=models.CASCADE, unique=True)
【问题讨论】:
-
#您可以通过覆盖 init #Pass the user's store as argument 来限制每个用户在您的 forms.py 上获得的选择。它将用于过滤查询集类 StoreDefaultAudience(forms.ModelForm): def __init__(self, store, *args, **kwargs): super(StoreDefaultAudience, self).__init__(*args, **kwargs) self.fields ['default_audience'] = forms.ModelChoiceField(queryset = models.Audience.objects.filter(store = store))
标签: django django-models