我需要一个带有一些FloatField场的模型,这个表的每个记录应该与另一个一起使用(第一行表示最小值,第二行表示最大值)。我喜欢用户同时添加或编辑这两行的值。我很想知道如何使用django CreateView和UpdateView泛型类或任何其他工具来实现此目的。请让我知道您的有用评论。
更新:这是我的代码的一部分:
#models.py
class DefinedInfo(models.Model):
user = models.CharField(max_length=30)
bound = models.CharField(max_length=3) #takes 'min' or 'max'
density = models.FloatField(default=0)
weight =models.FloatField(default=0)
....
#views.py
class InfoCreateView(LoginRequiredMixin, CreateView):
model = DefinedInfo
template_name = 'item_new.html'
fields = ['density', 'weight' ...]
def form_valid(self, form):
form.instance.user = self.request.user
form.instance.bound = 'min'
return super().form_valid(form)
class InfoUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = DefinedInfo
fields = ['density', 'weight' ...]
template_name = 'item_edit.html'
login_url = 'login'
def test_func(self):
obj = self.get_object()
return obj.user == self.request.user
#Html template
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div>
<h5>Define new item</h5>
<div>
<form action="" method="post">{% csrf_token %}
{{ form|crispy }}
<button" type="submit">Save </button>
<button type="reset" onclick="location.href={% url 'profile' %}" >Cancel</button>
</form>
</div>
</div>
{% endblock %}
添加或编辑单个记录没有问题,但我更喜欢同时处理“min”和“max”相关记录。
基于通用类的视图用于一次更新/创建/删除模型的单个对象。 如果您想进行一些自定义,那么编写自己的视图可能会更清晰,更容易。
如果它确实修改了DB中的两行,那么使UpdateModel(UpdateView)变得混乱。