【发布时间】:2018-02-13 03:14:34
【问题描述】:
我有两个模型 Requests 和 Events,它们的外键返回到 User 模型。尝试使用 Django Rest Framework 发布外键数据时,我收到 null 约束错误。 django 似乎不接受 user_id(requester_id 和 event_admin_id)引用。在可浏览的 API 中,外键部分(requester_id 和 event_id)不存在。是不是被什么东西隐藏了?请注意,event_participant 仅由外键组成,但它们在发布时出现在可浏览的 API 中。我不确定有什么区别
Missing event_admin_id foreignkey field Missing request_admin_id fk field
models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
user_job_description = models.CharField(max_length = 200)
user_profile_pic = models.ImageField(null = True, blank = True)
class Event(models.Model):
def __str__(self):
return self.event_name
event_name = models.CharField(max_length = 100)
event_location = models.CharField(max_length = 100)
event_description = models.TextField(max_length = 300)
admin_user_id = models.ForeignKey(User, related_name = 'event_admin')
class Request(models.Model):
def __str__(self):
return self.request_desc
requester_user_id = models.ForeignKey(User, related_name = 'requests')
request_desc = models.TextField(max_length = 100)
fulfiller_user_id = models.IntegerField(null = True, blank = True)
fulfilled_status = models.BooleanField()
class Event_Participant(models.Model):
def __str__(self):
return str(self.event_id)
user_id = models.ForeignKey(User, related_name = 'event_attendee')
event_id = models.ForeignKey(Event, related_name = 'event')
serializers.py
from django.contrib.auth import get_user_model
from crewboardsdb.models import Event
from crewboardsdb.models import Request
from crewboardsdb.models import Event_Participant
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
requests = serializers.StringRelatedField(many = True)
event_admin = serializers.StringRelatedField(many = True)
event_attendee= serializers.StringRelatedField(many = True)
class Meta:
model = get_user_model()
fields = ('id','username','first_name','last_name','email','user_job_description','event_admin','requests', 'event_attendee',)
class EventSerializer(serializers.ModelSerializer):
admin_user_id = serializers.StringRelatedField()
class Meta:
model = Event
fields = ('id', 'event_name', 'admin_user_id', 'event_description', 'event_location',)
lookup_field = 'admin_user_id'
class RequestSerializer(serializers.ModelSerializer):
requester_user_id = serializers.StringRelatedField()
class Meta:
model = Request
fields = ('id', 'request_desc', 'fulfilled_status','requester_user_id','fulfiller_user_id',)
lookup_field = 'requester_user_id'
class EventParticipantSerializer(serializers.ModelSerializer):
class Meta:
model = Event_Participant
fields = ('id', 'event_id', 'user_id')
【问题讨论】:
-
我应该补充一点,这些字段昨天是可见的,我不确定会发生什么变化。
标签: python django django-rest-framework foreign-keys