提问人:SpicyyRiice 提问时间:11/9/2023 更新时间:11/10/2023 访问量:47
Django:通过给出月份和日期来设置生日
Django: set birthday just by giving the month and day
问:
我是 Django 的新手
我想在管理面板中创建一个字段,我们可以通过提供月份和日期来设置用户的生日。现在,我们只能给出日期,但这不是我想要的。例如,我想要 2 个下拉列表,一个用于当天,一个用于月份
我的用户模型如下所示
型:
from django.contrib.auth.models import User
# Create your models here.
class Profile(models.Model):
birthday = models.DateField(blank=True, null=True)
def __str__(self):
return f'{self.user.get_full_name()}'
答:
0赞
Mahammadhusain kadiwala
11/9/2023
#1
我尝试根据您的要求使用 DateField()
解决这个问题
models.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
birthday = models.DateField(blank=True, null=True)
def __str__(self):
return f'{self.user.username}'
admin.py
from django import forms
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from .models import Profile
import datetime
class ProfileAdminForm(forms.ModelForm):
birthday_month = forms.IntegerField(label='Birthday Month', widget=forms.Select(choices=[(i, i) for i in range(1, 13)]))
birthday_day = forms.IntegerField(label='Birthday Day', widget=forms.Select(choices=[(i, i) for i in range(1, 32)]))
birthday_year = forms.IntegerField(label='Birthday Year', widget=forms.Select(choices=[(i, i) for i in range(datetime.datetime.now().year - 200, datetime.datetime.now().year)]))
class Meta:
model = Profile
fields = ['user', 'birthday_month', 'birthday_day', 'birthday_year']
class ProfileAdmin(admin.ModelAdmin):
form = ProfileAdminForm
list_display = ['user', 'birthday']
def save_model(self, request, obj, form, change):
month = form.cleaned_data['birthday_month']
day = form.cleaned_data['birthday_day']
year = form.cleaned_data['birthday_year']
# Format the date as YYYY-MM-DD
obj.birthday = f'{year:04d}-{month:02d}-{day:02d}'
super().save_model(request, obj, form, change)
admin.site.register(Profile, ProfileAdmin)
class CustomUserAdmin(UserAdmin):
pass
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
浏览器预览
评论
0赞
SpicyyRiice
11/10/2023
有没有办法不在生日中显示生日年份?
0赞
Mahammadhusain kadiwala
11/10/2023
答案:更新的 PL 检查
上一个:Django:设置语言
下一个:Django 管理员添加额外内容
评论
Select
datetime