【发布时间】:2016-12-20 10:47:48
【问题描述】:
我希望能够让用户在创建报告时“即时”创建位置。如果可能,请使用以下模型。
型号:
class Report(models.Model):
...
location = forms.ManyToManyField(Location)
class Location(models.Model):
name = forms.CharField(max_length=255)
...
我正在寻找的行为接近 django 表单集给出的行为。
确实,我目前能够在某种程度上使用外键关系并依赖表单集来做到这一点。使用这种技术django-extra-views 和django-dynamic-formset,我什至可以让用户选择他们想要添加的位置。
实际设置的精简版:
型号:
class Report(models.Model):
...
class Location(models.Model):
name = forms.CharField(max_length=255)
report = forms.ForeignKey('Report')
表格:
class LocationForm(forms.ModelForm):
class Meta:
model = Location
fields = '__all__'
class LocationFormSet(extra_views.InlineFormSet):
model = TestLocation
form_class = TestLocationForm
观看次数:
class ReportCreateView(extra_views.CreateWithInlinesView):
model = Report
inlines = [LocationFormSet, ]
不幸的是,使用此设置,一个位置不能属于多个报告,这会带来很多重复的位置。这就是为什么我认为多对多关系会更合适。我偶然发现了一些与这个问题相关的答案,这些答案谈到了中间模型,但我无法独自去任何地方让它发挥作用。
他们是否可以调整我的工作设置以使其适用于多对多关系?或者是否存在一种完全不同的方法让用户在报告创建期间“即时”创建位置?
谢谢!
【问题讨论】:
标签: python django django-forms many-to-many formset