Django:在UpdateView中覆盖get_queryset()

埃戈尔·克里茨基

“项目”模型

class Project(models.Model):
    company = models.ForeignKey('projects.Company', on_delete=models.PROTECT, related_name='projects')

    title = models.CharField('Project title', max_length=128)
    start_date = models.DateField('Project start date', blank=True, null=True)
    end_date = models.DateField('Project end date', blank=True, null=True)

    estimated_design = models.DecimalField('Estimated design hours', max_digits=5, decimal_places=1,
                                           validators=[MinValueValidator(Decimal('0.01'))])
    actual_design = models.DecimalField('Actual design hours', default=0, decimal_places=1, max_digits=5,
                                        validators=[MinValueValidator(Decimal('0.01'))])

    estimated_development = models.DecimalField('Estimated development hours', max_digits=5, decimal_places=1,
                                                validators=[MinValueValidator(Decimal('0.01'))])
    actual_development = models.DecimalField('Actual development hours', default=0, decimal_places=1, max_digits=5,
                                             validators=[MinValueValidator(Decimal('0.01'))])

    estimated_testing = models.DecimalField('Estimated testing hours', max_digits=5, decimal_places=1,
                                            validators=[MinValueValidator(Decimal('0.01'))])
    actual_testing = models.DecimalField('Actual testing hours', default=0, decimal_places=1, max_digits=5,
                                         validators=[MinValueValidator(Decimal('0.01'))])

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('project-update', kwargs={'pk': self.pk, 'slug': slugify(self.title)})

    @property
    def has_ended(self):
        return self.end_date is not None and self.end_date < timezone.now().date()

    @property
    def total_estimated_hours(self):
        return self.estimated_design + self.estimated_development + self.estimated_testing

    @property
    def total_actual_hours(self):
        return self.actual_design + self.actual_development + self.actual_testing

    @property
    def is_over_budget(self):
        return self.total_actual_hours > self.total_estimated_hours

我的ModelForm类

class ProjectForm(ModelForm):

    class Meta:
        model = Project
        fields = ['actual_design', 'actual_development', 'actual_testing']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.add_input(Submit('submit', 'UPDATE'))

我的UpdateView类别

class ProjectUpdateView(LoginRequiredMixin, UpdateView):
    model = Project
    form_class = ProjectForm
    success_url = reverse_lazy('dashboard')

目前,我的ProjectUpdateView类正在替换我的ProjectForm类上指示的十进制值。我应该将这些数值增加表格上指示的数字,而不是替换它们。据我了解,这可以通过重写ProjectUpdateView类中的get_queryset()来实现。我究竟该如何实施?

威廉·范昂塞姆

为了增加值,您可以在x替换值方法是重写方法:x + F('field_name')form_valid

from django.db.models import F

class ProjectUpdateView(LoginRequiredMixin, UpdateView):
    model = Project
    form_class = ProjectForm
    success_url = reverse_lazy('dashboard')

    def form_valid(self, form):
        form.instance.actual_design += F('actual_design')
        form.instance.actual_development += F('actual_development')
        form.instance.actual_testing += F('actual_testing')
        return super().form_valid(form)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何覆盖 get_queryset 方法以仅显示 django 中多对多字段中包含的对象?

来自分类Dev

如何在Django Rest Framework 3中覆盖ModelViewSet的get_queryset?

来自分类Dev

Django Rest框架中的get_queryset方法和ViewSets

来自分类Dev

Django过滤器get_queryset中的ForeignKey关系

来自分类Dev

DRF抛django.core.exceptions.ImproperlyConfigured覆盖get_queryset时

来自分类Dev

Django ReadOnlyModelViewSet:get_querySet被pk过滤

来自分类Dev

覆盖get_queryset会导致ListView中的缓存头痛,因为那里的数据仍然过时

来自分类Dev

覆盖get_queryset会导致ListView中的缓存头痛,因为那里的数据仍然过时

来自分类Dev

如何在 Django CBV get_queryset() 中检索 GET 参数

来自分类Dev

如何在 Django 中的 get_queryset() 中返回查询集

来自分类Dev

Django-如何使用户登录(ListView中的get_queryset)

来自分类Dev

get_queryset不会影响Django rest框架ModelViewSet中的查询

来自分类Dev

Django-如何使用户登录(ListView中的get_queryset)

来自分类Dev

在 Django REST Framework 中向 get_queryset 请求添加参数

来自分类Dev

为什么使用form_class而不是CreateView时UpdateView需要定义model / queryset / get_queryset?

来自分类Dev

Django get_queryset方法的单元测试失败

来自分类Dev

从get_queryset()django更新上下文参数值

来自分类Dev

pk上的Django get_queryset过滤器对象

来自分类Dev

Django从get_queryset(self)排序搜索结果

来自分类Dev

基于Django类的视图,在get_queryset内部导入

来自分类Dev

Django get_queryset方法的单元测试失败

来自分类Dev

如何在Django中正确使用get_queryset?

来自分类Dev

使用get_queryset在CreateView中过滤模型

来自分类Dev

在get_queryset中添加新的上下文变量

来自分类Dev

在get_queryset中获取上下文数据

来自分类Dev

如果由QuerySet.as_manager()创建,则修改Django Manager get_queryset()方法。

来自分类Dev

如何在Django视图中定义get_queryset,get_context_data?

来自分类Dev

Django:在get_context_data之后设置get_queryset

来自分类Dev

如何将参数传递给Django模型管理器的get_queryset方法?

Related 相关文章

  1. 1

    如何覆盖 get_queryset 方法以仅显示 django 中多对多字段中包含的对象?

  2. 2

    如何在Django Rest Framework 3中覆盖ModelViewSet的get_queryset?

  3. 3

    Django Rest框架中的get_queryset方法和ViewSets

  4. 4

    Django过滤器get_queryset中的ForeignKey关系

  5. 5

    DRF抛django.core.exceptions.ImproperlyConfigured覆盖get_queryset时

  6. 6

    Django ReadOnlyModelViewSet:get_querySet被pk过滤

  7. 7

    覆盖get_queryset会导致ListView中的缓存头痛,因为那里的数据仍然过时

  8. 8

    覆盖get_queryset会导致ListView中的缓存头痛,因为那里的数据仍然过时

  9. 9

    如何在 Django CBV get_queryset() 中检索 GET 参数

  10. 10

    如何在 Django 中的 get_queryset() 中返回查询集

  11. 11

    Django-如何使用户登录(ListView中的get_queryset)

  12. 12

    get_queryset不会影响Django rest框架ModelViewSet中的查询

  13. 13

    Django-如何使用户登录(ListView中的get_queryset)

  14. 14

    在 Django REST Framework 中向 get_queryset 请求添加参数

  15. 15

    为什么使用form_class而不是CreateView时UpdateView需要定义model / queryset / get_queryset?

  16. 16

    Django get_queryset方法的单元测试失败

  17. 17

    从get_queryset()django更新上下文参数值

  18. 18

    pk上的Django get_queryset过滤器对象

  19. 19

    Django从get_queryset(self)排序搜索结果

  20. 20

    基于Django类的视图,在get_queryset内部导入

  21. 21

    Django get_queryset方法的单元测试失败

  22. 22

    如何在Django中正确使用get_queryset?

  23. 23

    使用get_queryset在CreateView中过滤模型

  24. 24

    在get_queryset中添加新的上下文变量

  25. 25

    在get_queryset中获取上下文数据

  26. 26

    如果由QuerySet.as_manager()创建,则修改Django Manager get_queryset()方法。

  27. 27

    如何在Django视图中定义get_queryset,get_context_data?

  28. 28

    Django:在get_context_data之后设置get_queryset

  29. 29

    如何将参数传递给Django模型管理器的get_queryset方法?

热门标签

归档