如何编写代码,以便在使用 django 的模型中只选择一个单选按钮。?

巴努普拉卡什
#models.py
from django.db import models
from django.contrib.auth.models import User

CHOICES = (('1','Earned Leave'),('2','Casual Leave'),('3','Sick Leave'),('4','Paid Leave'))

class Leave(models.Model):

    employee_ID = models.CharField(max_length = 20)

    name = models.CharField(max_length = 50)

    user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)

    department = models.CharField(max_length = 50)

    designation = models.CharField(max_length = 50)

    type_of_leave = models.CharField(max_length = 15, choices = CHOICES)

    from_date = models.DateField(help_text = 'mm/dd/yy')

    to_date = models.DateField(help_text = 'mm/dd/yy')

    reporting_manager = models.CharField(max_length = 50, default = None, help_text = '0001_manager, 0002_manager')

    reason = models.CharField(max_length= 180)

    accepted = models.BooleanField(('accept'), default= False)

    rejected = models.BooleanField(('reject'), default = False)

    reason_reject = models.CharField(('reason for rejection'),max_length=50) // this didn't help me.

    def __str__(self):
        return self.name

这是一个请假申请表,其中accepted, rejected应仅选择两个字段 ( ) 中的一个,如果未选择字段拒绝字段,则reason_reject不应在/admin面板中显示。

#forms.py
from django import forms
from lrequests import models

class LeaveRequestForm(forms.ModelForm): 
    
    class Meta:
        fields = ("name", "employee_ID", "department", "designation", "type_of_leave", "from_date", "to_date", "reporting_manager", "reason")
        model = models.Leave

用户填写表单并提交。因此,现在管理员必须接受或拒绝它。reason_reject只有在管理员选择rejected字段后,字段才会显示给管理员这一切都应该只发生在管理端。

#admin.py
from django.contrib import admin
from . import models

@admin.register(models.Leave)
class LeaveAdmin(admin.ModelAdmin):
    list_display = ["name"]
    #"employee_ID", "department", "designation", "type_of_leave", "from_date", "to_date", "reporting_manager", "reason", "accepted", "rejected", "reason_reject"
    
    list_filter = ['department','type_of_leave']

    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        return (qs.filter(reporting_manager=request.user.username) or qs.filter(employee_ID=request.user.username))
    


 # def get_readonly_fields(self, request, obj=None):
# # the logged in user can be accessed through the request object 
#     if obj and request.user.is_staff:
#         readonly_fields = [f.name for f in self.opts.fields]
#         readonly_fields.remove('accepted')
#         readonly_fields.remove('rejected')
#     return readonly_fields
#the above chunk of get_readonly_fields was written so that the admin could only either 'accept' or 'reject' the form.

    def get_fields(self, request, obj=None):
         fields = [f.name for f in self.opts.fields]
         if obj and obj.rejected:
            fields.append('reason_reject')
         return fields

通过运行上面的代码,我得到KeyError at /admin/lrequests/leave/15/change/

"Key 'id' not found in 'LeaveForm'. Choices are: accepted, department, designation, employee_ID, from_date, name, reason, reason_reject, rejected, reporting_manager, to_date, type_of_leave, user."

巴努普拉卡什

首先,将其定义为下拉菜单。那就是像这样的选择

STATUS_CHOICES = (('0', 'Rejected'),('1', 'Accepted'),)
class Leave(models.Model):
     ...
     status = models.CharField(max_length = 15, choices = STATUS_CHOICES)

然后在 admin.py

class LeaveAdmin(admin.ModelAdmin):
     ...
     radio_fields = {"status": admin.HORIZONTAL}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何编写函数/定义以便在 HTML 模板中呈现 Django?

来自分类Dev

Django Migrations-如何只插入一个模型?

来自分类Dev

使用Javascript选择单选按钮组中的任何一个单选按钮

来自分类Dev

使用Javascript选择单选按钮组中的任何一个单选按钮

来自分类Dev

如何使用jQuery一次只选择一个具有不同名称的单选按钮?

来自分类Dev

如何使用jquery一次只选择一个具有不同名称的单选按钮?

来自分类Dev

如何使用 if 语句通过 id 编写 get 元素,以便在单击一个按钮时显示 div 并隐藏其余部分?

来自分类Dev

如何仅使用React选择一个单选按钮

来自分类Dev

如何在Django中访问单选按钮选择的值

来自分类Dev

使用RadioButtonFor只允许选择一个单选按钮

来自分类Dev

如何在 django 中创建一个下拉菜单,并从创建的模型对象中进行选择?

来自分类Dev

使用外部按钮选择下一个/上一个单选按钮

来自分类Dev

如何验证两个单选按钮,用户应选择两个单选按钮中的任何一个(电子邮件或电话)

来自分类Dev

如何基于另一个模型的实例在Django中创建模型,但已过滤

来自分类Dev

我如何编写阴影dom,以便在大多数孩子之后*之后选择特定元素?

来自分类Dev

如何从单选按钮中仅选择一个选项后发布两个属性的数据?

来自分类Dev

如何编写“ if”语句,以便在输入字段中不允许空格?

来自分类Dev

如何使用 PHP 将 HTML 和 JavaScript 编写的表单中的数据存储在会话或 cookie 中,以便在访问表单时进行预加载

来自分类Dev

在 Django 中,如何使用基于函数的视图中的另一个模型数据

来自分类Dev

如何在打字稿文件的一组单选按钮中选择一个特定的单选按钮?

来自分类Dev

使用一个模型中的变量并将其添加到Django中的表单中

来自分类Dev

如何建立一个可变的Vecs池,以便在Drop上重复使用?

来自分类Dev

选择/取消选择时如何改变一个单选按钮的背景颜色/形状

来自分类Dev

如何使用 Django 的 ORM (1.11) 从 LEFT JOIN 的表/模型中选择一个字段

来自分类Dev

如何使用QPixmap,以便在地址中只使用项目文件夹

来自分类Dev

如何使用ajax在Django中增加一个喜欢的按钮?

来自分类Dev

Django:如何为用户注册的模型形式编写代码

来自分类Dev

如果在Django中形成另一个模型,如何基于相同模型从另一个模型中显示值

来自分类Dev

如何在Django模板中显示模型中的一个字段

Related 相关文章

  1. 1

    如何编写函数/定义以便在 HTML 模板中呈现 Django?

  2. 2

    Django Migrations-如何只插入一个模型?

  3. 3

    使用Javascript选择单选按钮组中的任何一个单选按钮

  4. 4

    使用Javascript选择单选按钮组中的任何一个单选按钮

  5. 5

    如何使用jQuery一次只选择一个具有不同名称的单选按钮?

  6. 6

    如何使用jquery一次只选择一个具有不同名称的单选按钮?

  7. 7

    如何使用 if 语句通过 id 编写 get 元素,以便在单击一个按钮时显示 div 并隐藏其余部分?

  8. 8

    如何仅使用React选择一个单选按钮

  9. 9

    如何在Django中访问单选按钮选择的值

  10. 10

    使用RadioButtonFor只允许选择一个单选按钮

  11. 11

    如何在 django 中创建一个下拉菜单,并从创建的模型对象中进行选择?

  12. 12

    使用外部按钮选择下一个/上一个单选按钮

  13. 13

    如何验证两个单选按钮,用户应选择两个单选按钮中的任何一个(电子邮件或电话)

  14. 14

    如何基于另一个模型的实例在Django中创建模型,但已过滤

  15. 15

    我如何编写阴影dom,以便在大多数孩子之后*之后选择特定元素?

  16. 16

    如何从单选按钮中仅选择一个选项后发布两个属性的数据?

  17. 17

    如何编写“ if”语句,以便在输入字段中不允许空格?

  18. 18

    如何使用 PHP 将 HTML 和 JavaScript 编写的表单中的数据存储在会话或 cookie 中,以便在访问表单时进行预加载

  19. 19

    在 Django 中,如何使用基于函数的视图中的另一个模型数据

  20. 20

    如何在打字稿文件的一组单选按钮中选择一个特定的单选按钮?

  21. 21

    使用一个模型中的变量并将其添加到Django中的表单中

  22. 22

    如何建立一个可变的Vecs池,以便在Drop上重复使用?

  23. 23

    选择/取消选择时如何改变一个单选按钮的背景颜色/形状

  24. 24

    如何使用 Django 的 ORM (1.11) 从 LEFT JOIN 的表/模型中选择一个字段

  25. 25

    如何使用QPixmap,以便在地址中只使用项目文件夹

  26. 26

    如何使用ajax在Django中增加一个喜欢的按钮?

  27. 27

    Django:如何为用户注册的模型形式编写代码

  28. 28

    如果在Django中形成另一个模型,如何基于相同模型从另一个模型中显示值

  29. 29

    如何在Django模板中显示模型中的一个字段

热门标签

归档