gpt4 book ai didi

python - modelform django 中多对多字段的过滤器选择

转载 作者:行者123 更新时间:2023-12-01 04:54:55 24 4
gpt4 key购买 nike

我想过滤模型表单中的多对多字段。

class IdealBehaviour(models.Model):
cbs_role = models.ManyToManyField(CbsRole, null=True, blank=True)
cbs = models.ForeignKey('cbs.CBS', null=True, blank=True)
ideal_behaviour = models.CharField(max_length=500, null=True, blank=True)
Description = models.CharField(max_length=1000, null=True, blank=True)
created_time = models.DateTimeField(auto_now_add = True,null=True, blank=True)

class StandardWork(models.Model):
cbs_and_role = models.ManyToManyField('userdata.CbsRole', null=True, blank=True)
standard_work_number = models.BigIntegerField(null=True, blank=True)
system_name= models.CharField(max_length=500, null=True, blank=True)
system_description=models.TextField(null=True, blank=True)
ideal_behaviour = models.ManyToManyField ('userdata.IdealBehaviour', null=True, blank=True)
publish = models.BooleanField(default=False)
created_time = models.DateTimeField(auto_now_add = True,null=True, blank=True)

class TodoListForm(ModelForm): # used in manage view
class Meta:
model = StandardWork
exclude = ('publish', 'cbs_and_role', 'standard_work_number')
widgets = {
'system_description': forms.Textarea(attrs={'rows':3}),
}

我想显示查询的 Ideal_behaviour 选择

cbsobject = CBS.objects.get(id=dat)
idealbehaviour = IdealBehaviour.objects.filter(cbs=cbsobject)

我想将 TodoListForm 中的 Ideal_behaviour 选择为仅 Idealbehaviour。

我如何查询以仅以模型形式显示与该 perticuler cbs 相关的理想行为?

我找到了解决方案

def __init__(self, *args, **kwargs):
super(PollForm, self).__init__(*args, **kwargs)
if self.instance:
print "printing in form"
print self.instance.id
self.fields['ideal_behaviour'].queryset = IdealBehaviour.objects.filter(cbs__exact=self.instance.id)

但我不知道如何获取 cbs 的 id。 self.instance.id 为标准工作 ID 提供。我想要 cbs 的 ID。即我想要的形式作为实例的 cbsobject 。之后它工作正常。

最佳答案

找到解决方案。

我不知道这是否可行,但我只是将表单放入 View 文件中,这样我就可以获得“cbsobject”的实例。

class PollForm(forms.ModelForm): # used in manage view
class Meta:
model = StandardWork
exclude = ('cbs_and_role','publish', 'standard_work_number')
widgets = {
'system_description': forms.Textarea(attrs={'rows':3}),
}
def __init__(self, *args, **kwargs):
super(PollForm, self).__init__(*args, **kwargs)
if self.instance:
print "printing in form"
print self.instance.id
self.fields['ideal_behaviour'].queryset = IdealBehaviour.objects.filter(cbs__exact=cbsobject)

关于python - modelform django 中多对多字段的过滤器选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27652933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com