【问题标题】:How to make django model ManyToMany field empty initially?最初如何使 django 模型 ManyToMany 字段为空?
【发布时间】:2018-10-19 02:21:55
【问题描述】:

我有两个相关的模型如下。

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author)
    isbn =models.CharField(max_length=15)


class Lending(models.Model):
    member_id = models.ForeignKey(Member)
    name = models.CharField(max_length=100)
    borrowed = models.DateField(auto_now_add=True)
    returning = models.DateField()
    book_list = models.ManyToManyField(Book, related_name='borrowed_books')

我想在向用户显示 Lending 创建 HTML 表单时将图书列表字段设为空。我想确保它在后端模型表单中不为空白,并且在模型中不为空。我这样做是因为书单可能很大,并且在发送数据时将使用 ajax 查询书以将它们动态添加到 HTML 表单字段中的书单中。我该怎么做?

【问题讨论】:

  • 您能展示您的视图、表单模板等吗?
  • 它们只是用于创建的标准 CBV,我渲染 form_p。
  • 在你的模板中试试这个,{{ form.field.as_hidden }}
  • 你是什么意思“让书单字段为空”,“后端模型表单中不为空”和“模型中不为空”???

标签: django django-model-field


【解决方案1】:

如果您使用基于 django 类的视图,您可以覆盖 get_form 方法来编辑表单并设置一些初始值。我可以举个例子——

class LendingView(generic.CreateView):
    ...
    def get_form(self,form_class=None):
        form = super().get_form(form_class)
        form['book_list'].field.choices = {}
        return form

这将清空您对某个字段的选择。有什么疑惑的评论一下吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 2016-10-12
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多