gpt4 book ai didi

django - 需要有关 Django ModelForm : How to filter ForeignKey/ManyToManyField? 的帮助

转载 作者:行者123 更新时间:2023-12-04 16:41:51 27 4
gpt4 key购买 nike

好吧,我很难解释这一点,如果我应该向您提供更多详细信息,请告诉我。

我的网址如下所示:http://domain.com/ <category >>/
每个<category > 可能有一个或多个子类别。

我希望类别页面有一个包含类别子类别的选择框(以及其他字段)的表单。
我目前在其中一个模板中对表单进行了硬编码,但我想让它直接反射(reflect)模型。

在我目前的硬编码解决方案中,我的类别 View 中有:

s = Category.objects.filter(parents__exact=c.id)  

表单模板遍历并打印出选择框(请参阅下面的模型代码)

我猜我想要一个带有 的 ModelFormSet初始化 过滤掉类别,但我似乎无法在文档中找到如何做到这一点。

一直在看 How do I filter ForeignKey choices in a Django ModelForm?也一样,但我无法让它正常工作。

我的模特
# The model that the Form should implement
class Incoming(models.Model):
cat_id = models.ForeignKey(Category)
zipcode = models.PositiveIntegerField()
name = models.CharField(max_length=200)
email = models.EmailField()
telephone = models.CharField(max_length=18)
submit_date = models.DateTimeField(auto_now_add=True)
approved = models.BooleanField(default=False)

# The categories, each category can have none or many parent categories
class Category(models.Model):
name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField()
parents = models.ManyToManyField('self',symmetrical=False, blank=True, null=True)

def __unicode__(self):
return self.name

我的表格
class IncomingForm(ModelForm):
class Meta:
model = Incoming

最佳答案

正如您所说,您需要一个带有自定义 __init__ 的模型表单类:

class IncomingForm(ModelForm):
class Meta:
model = Incoming

def __init__(self, *args, **kwargs):
super(IncomingForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['parents'].queryset = Category.objects.filter(
parents__exact=instance.id)

关于django - 需要有关 Django ModelForm : How to filter ForeignKey/ManyToManyField? 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962226/

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