詹戈:要做什么在以下场景中使用modelform、formset、model formset?

2024-04-26 06:14:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个模型:

class option(models.Model):
    warval = models.ForeignKey(war)
    caption = models.CharField(max_length=20)
    text = models.TextField(blank=True,null=True)
    url = models.URLField(blank=True,null=True)
    user = models.ForeignKey(User)

我有一些模型,比如:

class text_option(ModelForm):
    class Meta:
        model = option
        exclude = ('url','warval','user')

class url_option(ModelForm):
    class Meta:
        model = option
        exclude = ('text','warval','user')
    def clean_url(self):
            #processing...

我希望我的用户创建尽可能多的选项想要。所以呢我的选项是使用“formset”。 但是,我如何用“war”实例实例化formset中的所有表单(“war”是一个模型),以及如何在我的formset中提供上述模型表单的所有功能?你知道吗


Tags: text模型trueurlmodelsnullclassoption
1条回答
网友
1楼 · 发布于 2024-04-26 06:14:54

您可以通过url显式地传递war实例的id,比如http://myserver/add_options/1,其中1war的id,并在视图中使用它来适当地更新选项的foreignkey字段。你知道吗

另一个选项是在表单中将id作为隐式/隐藏输入字段传递,并使用该id标识视图中的war实例。你知道吗

另一方面,您可以利用继承来简化模型定义。 比如:

class base_option(models.Model):
    warval = models.ForeignKey(war)
    caption = models.CharField(max_length=20)
    user = models.ForeignKey(User)

class text_option(base_option):
    text = models.TextField(blank=True,null=True)

class url_option(base_option):
    url = models.URLField(blank=True,null=True)

相关问题 更多 >