我有以下模特:
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'
我会感激任何想法如何解决我的问题。