![](/img/trans.png)
[英]Using ABC, PolymorphicModel, django-models gives metaclass conflict
[英]insert query using django-models
数据库结构
用户,用户有多个事件,事件有多个参与者。
用户模型:
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
)
像这样添加与会者的最佳,简便,快捷方式是什么?
我假设必须有一些内容。可以在event_attendees list = attendees array
字段后添加event_attendees list = attendees array
。 但是找不到那样的东西。
在“ OEventAttendee”模型中,您需要一个“ OEvent”实例,因此您需要创建第一个 “ OEvent”实例,然后可以使用Django bulk_create方法创建与会者。
您可以添加的是related_name="events"
用于用户字段中的事件以及与与会者的related_name="attendees"
因此您可以
user.events.attendees.all()
,在创建与会者后,您可以在for循环中执行user.events.attendees.add(atendee)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.