【发布时间】:2021-07-10 10:35:41
【问题描述】:
我有一个模型选举,它有一个与候选模型有多对多关系的“候选人”字段和一个与区域模型有一对多关系的“区域”字段。此外,Candidate 模型也有一个 region 字段,它与 Region 模型也有一对多的关系。
现在我创建了模型选举的模型形式。我的问题是如何过滤特定区域的候选人
这是我的模型和表格
class Region(models.Model):
region_name = models.CharField(max_length=200, null=True)
region_id = models.CharField(max_length=20, null=True, unique=True)
def __str__(self):
return self.region_name
class Candidate(models.Model):
region = models.ForeignKey(Region, null=True, on_delete=models.SET_NULL)
name = models.CharField(max_length=200, null=True)
party_name = models.CharField(max_length=200, null=True)
candidate_id = models.CharField(max_length=10, null=True, unique=True)
def __str__(self):
return self.name
class Election(models.Model):
admin = models.ForeignKey(Admin, null=True, on_delete=models.SET_NULL)
region_name = models.ForeignKey(Region, null=True, on_delete=models.SET_NULL)
region_id = models.CharField(max_length=200, null=True)
date_created = models.DateField(null=True)
candidates = models.ManyToManyField(Candidate)
winner = models.CharField(max_length=200, blank=True)
class NewElectionForm(forms.ModelForm):
class Meta:
model = Election
exclude = ['winner']
def __init__ (self, *args, **kwargs):
super(NewElectionForm, self).__init__(*args, **kwargs)
self.fields["candidates"].widget = forms.widgets.CheckboxSelectMultiple()
#below query is for testing
#region = Region.objects.get(region_name='Mumbai')
self.fields["candidates"].queryset = region.candidate_set.all()
每个地区都有一个管理员将发布此表单。由于 region_name 在这里是可变的,我无法运行 region.candidate_set 查询 如果上述方法不可行,还有其他解决方案吗?
【问题讨论】:
-
太宽泛了,REGION 变量是从哪里来的?是登录用户所在的地区,还是访问者提供的?
标签: django django-models django-forms django-queryset