ali*_*s51 6 python django many-to-many django-models django-forms
我有以下模型:
class Meeting(models.Model):
meeting_title = models.CharField(default='', max_length=128, blank=True, null=True)
meeting_time = models.TimeField(blank=False, null=False)
meeting_date = models.DateField(blank=False, null=False)
meeting_visitors = models.ManyToManyField(Visitor, blank=True, default="")
Run Code Online (Sandbox Code Playgroud)
以及以下形式:
class AddMeetingForm(forms.ModelForm):
class Meta:
model = Meeting
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
作为meeting_visitors一个ManyToMany字段,它可以包含一条或多条Visitor记录。
该表格可以在一天中的不同时间更新。我想知道Visitor添加到会议中的每个人的时间戳(即在现实世界中,当他们到达会议时)。
最简单/最有效的方法是什么?
我知道我可以获取timestamp模型实例已更新的信息meeting_updated = models.DateTimeField(auto_now_add =False, auto_now=True),但我想要字段中每条记录的等效信息meeting_visitors。
through您可以使用多对多字段中的关键字轻松创建这种关系
Django 允许您指定用于管理多对多关系的模型。然后,您可以在中间模型上添加额外的字段。中间模型与 ManyToManyField 关联,使用 through 参数指向将充当中介的模型。
因此,您可以这样使用它。
class Visitor(models.Model):
name = models.CharField(max_length=30)
class Meeting(model.Model):
title = models.CharField(max_length=30)
time = models.TimeField(blank=False, null=False)
date = models.DateField(blank=False, null=False)
attendance = models.ManyToManyField(Visitor, through='Attendant')
class Attendant(models.Model):
visitors = models.ForeignKey(Visitor)
meeting = models.ForeignKey(Meeting)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1236 次 |
| 最近记录: |