Django:在模型创建表单中设置ManyToMany字段最初为空

时间:2017-08-16 07:33:22

标签: django forms manytomanyfield

我有以下模特:

class Robject(models.Model):
    project = models.ForeignKey(to=Project, null=True)
    author = models.ForeignKey(
        to=User, null=True, related_name="robjects_in_which_user_is_author")
    name = models.CharField(max_length=100)
    create_by = models.ForeignKey(
        to=User, related_name="robjects_created_by_user", null=True)
    create_date = models.DateTimeField(null=True)
    modify_by = models.ForeignKey(to=User, null=True)
    name = models.ManyToManyField(
        "Name", related_name="robject_name",
        help_text='The name of robject'
    )


class Name(models.Model):
    name = models.CharField(max_length=100)
    primary = models.BooleanField()

我想创建一个用户可以创建新Robject的表单。我希望此表单的工作方式与管理页面中的Robject创建表单相同。这意味着我想在'name'旁边选择'plus'按钮选择多个输入,该用户可以在窗口弹出窗体中单击并创建新的Name。名称创建弹出窗口关闭后,用户可以在选择输入中看到新名称。我的问题是用户不应该看到在其他Robject创建尝试期间创建的任何已存在的Name对象。 当他想要创建新的Robject时,选择多个名称输入应该从头开始为空。

我正在使用django-addanother以我自己的形式模仿管理表单。这就是表单的外观:

class RobjectForm(forms.ModelForm):  
    class Meta:  
        model = Robject  
        fields = '__all__'  
        widgets = {  
            'name': AddAnotherWidgetWrapper(
                forms.SelectMultiple,
                reverse_lazy('add_name', args=['proj_1']),
            ),
        }  

和CreateNameView:

class CreateNameView(CreatePopupMixin, CreateView):
    model = Name
    fields = ['name', "primary"]
    template_name = 'robjects/create_name.html'

我会感激任何想法如何解决我的问题。

0 个答案:

没有答案