数据库结构
用户,用户有多个事件,事件有多个与会者。
用户模型:
from django.db import models
class User(models.Model):
email = models.CharField(max_length=100, unique=True, null=True)
firstname = models.CharField(max_length=100, null=True)
lastname = models.CharField(max_length=100, null=True)
org_url = models.CharField(max_length=100, null=True)
office_username = models.CharField(max_length=100, null=True)
office_email = models.CharField(max_length=100, null=True)
isdeleted = models.BooleanField(default=False)
createdon = models.DateTimeField(auto_now_add=True, null=True)
modifiedon = models.DateTimeField(auto_now=True, null=True)
活动模型:
from django.db import models
from .user import User
class OEvent(models.Model):
frk_user = models.ForeignKey(User, on_delete=models.CASCADE)
o_event_id = models.CharField(max_length=250, null=True)
location = models.CharField(max_length=250, null=True)
starts_at = models.CharField(max_length=50, null=True)
ends_at = models.CharField(max_length=50, null=True)
event_title = models.CharField(max_length=150, null=True)
isdeleted = models.BooleanField(default=False)
createdon = models.CharField(max_length=50, null=True)
modifiedon = models.CharField(max_length=50, null=True)
参加者模型:
from django.db import models
from .o_events import OEvent
class OEventAttendee(models.Model):
frk_o_event = models.ForeignKey(OEvent, on_delete=models.CASCADE)
email = models.CharField(max_length=200, null=True)
name = models.CharField(max_length=200, null=True)
我可以针对这样的用户插入事件:
user.oevent_set.create(
o_event_id=nData['Id'],
location=nData['Location']['DisplayName'],
starts_at=startdt,
ends_at=enddt,
event_title=nData['Subject'],
isdeleted=False,
createdon=createdon,
modifiedon=modifiedon
)
添加此类与会者的最佳,最简单,最简短的方法是什么?
我假设必须有一些东西我们可以在modifiedon字段之后添加event_attendees list = attendees array
。但是找不到那样的东西。
答案 0 :(得分:0)
在你的“OEventAttendee”模型中你期望一个“OEvent”实例,所以你需要创建第一个“OEvent”实例然后你可以使用Django bulk_create方法创建参与者
答案 1 :(得分:-1)
您可以为用户字段和与会者related_name="events"
上的事件添加related_name="attendees"
,以便您可以
user.events.attendees.all()
在您创建与会者后,您可以在for循环中执行user.events.attendees.add(atendee)