我正在用Python/Django制作一个web应用程序,并试图制作一个显示会议的日历。我在models.py
中有以下内容。
class Meeting(models.Model):
id = models.AutoField(primary_key=True)
admin = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
name = models.CharField(max_length=20, null=True)
location = models.CharField(max_length=200, null=True)
start_date = models.DateTimeField(default=None, null=True)
end_date = models.DateTimeField(default=None, null=True)
description = models.CharField(max_length=2000, null=True)
class CustomUser(AbstractUser):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200, null=True)
email = models.EmailField(max_length=70, null=True, unique=True)
password = models.CharField(max_length=50, null=True)
class Member(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
meeting = models.ForeignKey(Meeting, on_delete=models.CASCADE)
从本质上讲,用户和会议在成员模型中是链接的。我在database.py
中有以下功能,它创建了一个新的会议:
def createMeeting(name, location, admin, start_date, end_date, description):
new = Meeting(name=name, location=location, admin=admin, start_date=start_date, end_date=end_date, description=description)
if not duplicate(Meeting, new):
new.save()
membership = Member(user=admin, meeting=new)
if not duplicate(Member, membership):
membership.save()
我正在尝试获取一个登录用户在特定月份和年份参加的所有会议的列表。然而,由于会议的start_date是DateTime对象,我不确定什么是最好的方法。任何见解都将不胜感激。
您可以在start_date
字段上使用__year
查找[Django-doc]和__month
查询[Django-dc]进行过滤:
Meeting.objects.filter(
start_date__year=2019,
start_date__month=11,
member__user=request.user
)
当然,2019
和11
可以是不同的年份和月份。