python - 在 Django Admin 中列出存储在另一个模型中的所有值
问题描述
我有一个小项目,我需要创建一个系统来记录一个人在几个时间段内每天所做的事情(例如,“8:00-9:00”、“10:00-11:00”、“13 :00-14:00”)。我在 Django 中实现了这个项目,并使用 Django Admin 来展示系统。
我在models.py中创建了三个模型tmpDate、tmpHour、tmpDateHour。
from datetime import datetime
from datetime import date as datetimeDate
class tmpDate(models.Model):
date=models.DateField(default=datetime.now, blank=True)
total_tmp_time=models.DecimalField(max_digits=10,decimal_places=1,default=0.0)
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
def __str__(self):
return self.date
class tmpHour(models.Model):
start_time=models.TimeField()
end_time=models.TimeField()
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
def __str__(self):
return str(self.create_time)+"-"+str(self.update_time)
class tmpDateHour(models.Model):
date=models.ForeignKey(tmpDate,on_delete=models.CASCADE)
hour_time=models.ForeignKey(tmpHour,on_delete=models.CASCADE)
tmp_length=models.DecimalField(max_digits=10,decimal_places=1,default=0.0)
comment=models.CharField(max_length=200,null=True)
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
这个想法是我在 tmpHour 中创建了一些时隙(例如,“8:00-9:00”、“10:00-11:00”、“13:00-14:00”)。一旦我在 tmpDate 的管理员中创建了一个新的日期,那么存储在 tmpHour 中的所有时间段都将填充相应的字段。像这样的东西
但是,我不知道如何在 admin 中进行设置,我目前在 admin.py 中有以下设置,
class tmpDateHourInline(admin.TabularInline):
model = tmpDateHour
extra = 1
class tmpHourAdmin(admin.ModelAdmin):
pass
class tmpDateAdmin(admin.ModelAdmin):
inlines=[tmpDateHourInline]
admin.site.register(tmpDate,tmpDateAdmin)
admin.site.register(tmpHour,tmpHourAdmin)
这给了我以下结果。它需要我手动选择时隙。
如何修改 admin.py 以使 tmpHour 中的所有时间段自动弹出并填写字段?
解决方案
也许尝试这样的事情(未测试):
from django.forms.models import BaseInlineFormSet
class DateHourInlineFormSet(BaseInlineFormSet):
model = tmpDateHour
def __init__(self, *args, **kwargs):
super(DateHourInlineFormSet, self).__init__(*args, **kwargs)
hour_time1 = tmpHour.objects.get(pk=1)
hour_time2 = tmpHour.objects.get(pk=2)
self.initial=[{'hour_time': hour_time1}, {'hour_time': hour_time2}]
class tmpDateHourInline(admin.TabularInline):
model = tmpDateHour
formset = DateHourInlineFormSet
extra = 1
推荐阅读
- javascript - 如何从对象中获取数据并在 html 中的元素中分配 - 由 javascript 编写的代码
- django - 多个 ForeignKeys 上的 Django Queryset
- django - 努力查看自定义 Django 模型管理器的实用性
- java - 从 Android 设备上的 Java 服务器获取响应
- java - 显示来自 url 的图像,活动停止
- laravel - 编写一个函数,每N秒生成一个随机数PHP
- java - 我正在尝试使用 ContactsContract,Phone 中的联系人 ID 从 CommonDataKinds.Phone 中提取电话号码
- javascript - 如何在 React JS 中将 TypeScript 转换为 JavaScript
- python - 将列中的所有字符串加为一个
- html - 如何使 CSS 列表中的第一行共享渐变色动画?