django - 在 django 管理面板中一次添加多条记录

标签 django django-admin

我有以下设置。

from django.db import models
from django.contrib.auth.models import User

class Event(models.Model):
    name = models.CharField(max_length=64)
    date = models.DateField()

ATTENDANCE_CHOICES = (
    ('A','Attending'),
    ('N','Absent'),
    ('L','Taken ill'),
)

class Attendance(models.Model):
    student = models.ForeignKey(User)
    event = models.ForeignKey(Event)
    status = models.CharField(max_length=1, choices=ATTENDANCE_CHOICES)

简而言之:学生(用户)参加或不参加类(class)(事件),这是通过出勤记录的。 问题是一次添加一个出勤记录。

我正在寻找一种为每个类(class)(每个事件对象)提供表格的方法,其中包含所有学生的列表和出勤状态单选按钮或旁边的下拉菜单。

类似这样的事情:

/image/J2G4d.png

我已经看过很多关于通过 django admin 插入多个/批量记录的讨论,我开始想知道这是否可以通过 django admin 实现,或者我是否必须从头开始创建这样的表单?不管怎样,最好的(最像 django 的)方法是什么?

最佳答案

“这可能吗?”开箱即用。

查看 django Admin 应用程序、Inlines、ModelForms 和 RadioSelect 小部件。

class MyForm(forms.ModelForm):
    class Meta:
        model = Attendance

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs
        self.fields['status'].widget = forms.RadioSelect(choices=self.fields['status'].choices)

class AttendanceInline(admin.TabularInline):
    model = Attendance
    form = MyForm

class EventAdmin(admin.ModelAdmin):
     inlines = [AttendanceInline]

     def save_model(self, request, obj, form, change):
        obj.save()
        for user in User.objects.all():
            obj.attendance_set.create(user=user, status='')
             # you should consider a null field or a possible choice for "Undecided"

admin.site.register(Event, EventAdmin)

关于django - 在 django 管理面板中一次添加多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9140411/

相关文章:

python - 如何在 Django 中创建动态创建的单选按钮表单

django - Django:为数据库中的现有条目生成子弹字段数据

python - 如何在迁移过程中访问不在 django 模型中但在数据库中可用的字段

python - django-admin-sortable2 不排序 SortableAdminMixin 的顺序

Django models.ForeignKey 过滤器

python - Django:尝试制作自定义表单时出现 RelatedObjectDoesNotExist 错误

django - 使用 csv.reader 读取上传的文件

django 管理员编辑模型选择/prefetch_related?

Django channel daphne 返回 200 状态代码

django - 从管理页面更新模型后发送电子邮件 (Django)