繁体   English   中英

使用Django模型插入查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM