使用django-models插入查询

时间:2018-03-13 06:31:59

标签: python django django-models django-rest-framework

数据库结构

用户,用户有多个事件,事件有多个与会者。

用户模型:

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。但是找不到那样的东西。

2 个答案:

答案 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)