我正在学习django,遇到了一个挑战。我有一个模型,在这个模型中,我希望根据用户希望填充的内容多次渲染特定字段,而其余的模型字段保持不变。下面是一个示例模型。我希望以这样的方式呈现模型表单:'building'
和'tour_date'
字段可以根据需要重复多次,而'client_name'
和'client_email'
字段保持不变
我查看了inlineformset_factory
,但我认为它需要一个父模型。我不认为它符合我的目的,尽管我希望它有一些特性,比如'extra'
和'can_delete'
。保存的记录必须保存为'Tour'
表中的新行
我在下面的例子中面临的另一个挑战是“building”字段必须是下拉列表。我提供了下面的forms.py供参考
如何在Django 3.0中以相同的形式编写视图并多次呈现'building'
和'tour_date'
两个字段?请求一些帮助和指导
models.py:
class Tour(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
building = models.CharField(max_length=255)
tour_date = models.DateField()
...
class Meta:
managed = True
unique_together = ('name', 'building')
forms.py:
class TourForm(forms.ModelForm):
building = forms.ModelChoiceField(
widget=forms.Select,
queryset=Country.objects.filter(city='ABC'),
required=True
)
class Meta:
model = Tour
fields = ['name', 'email', 'building','tour_date']
views.py:
def add_tours(request):
if request.method == 'POST':
form = TourForm(request.POST)
if form.is_valid():
form.save()
return redirect('tours-browse')
else:
form = TourForm()
template = 'data/tours_add.html'
context = {'form': form}
return render(request, template, context)
这不是它的工作原理。数据库字段是原子的-它们只包含一个值。如果需要不确定数量的值,可以使用具有一对多(外键)或多对多关系的相关模型。你想要一个“旅游日期”和一个“建筑”模型,在“旅游”中既有外键也有很多关系。然后,您将能够为这些相关模型使用表单集
实现这一点的最佳方法是根据您的应用程序使用ManytoMany关系或manytoone,这将是非常多的工作,但它是值得的,请参阅https://docs.djangoproject.com/en/3.0/topics/db/examples/many_to_many/的更多信息
相关问题 更多 >
编程相关推荐