Django,如何使用CreateView和UpdateView同时添加两条记录

问题描述 投票:0回答:1

我需要一个带有一些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”相关记录。

django forms django-generic-views
1个回答
2
投票

基于通用类的视图用于一次更新/创建/删除模型的单个对象。 如果您想进行一些自定义,那么编写自己的视图可能会更清晰,更容易。

如果它确实修改了DB中的两行,那么使UpdateModel(UpdateView)变得混乱。

© www.soinside.com 2019 - 2024. All rights reserved.