python – Django inlineformset_factory和ManyToMany字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django inlineformset_factory和ManyToMany字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1397字,纯文字阅读大概需要2分钟。
内容图文
![python – Django inlineformset_factory和ManyToMany字段](/upload/InfoBanner/zyjiaocheng/777/eed02f75403040b5b7348c65e394f384.jpg)
我正在尝试为以下模型创建一个formset:
class Category(models.Model):
name = models.CharField(max_length=100, unique=True)
description = models.TextField(null = True, blank=True)
class Recipe(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
user = models.ForeignKey(User)
categories = models.ManyToManyField(Category, null = True, blank = True)
但是每当我尝试实现一个formset时,就像这样:
FormSet = inlineformset_factory(Category, Recipe, extra=3)
formset = FormSet()
我收到一条错误,指出Category模型中没有ForeignKey.是否可以使用ManyToManyField构建表单集,或以某种方式复制此功能?
谢谢!
解决方法:
根据源代码和文档,它只用于外键
因此,如果您想为模型创建一个formset,则必须进行更改
categories = models.ManyToManyField(Category, null = True, blank = True)
至
categories = models.ForeignKey("Category", null = True, blank = True)
文档:
https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#inline-formsets
https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#more-than-one-foreign-key-to-the-same-model
Django来源:
def inlineformset_factory(parent_model, model, form=ModelForm,
formset=BaseInlineFormSet, fk_name=None,
fields=None, exclude=None,
extra=3, can_order=False, can_delete=True, max_num=None,
formfield_callback=None):
"""
Returns an ``InlineFormSet`` for the given kwargs.
You must provide ``fk_name`` if ``model`` has more than one ``ForeignKey``
to ``parent_model``.
"""
内容总结
以上是互联网集市为您收集整理的python – Django inlineformset_factory和ManyToMany字段全部内容,希望文章能够帮你解决python – Django inlineformset_factory和ManyToMany字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。