python - 也通过后询问primarykeyrelatedfield
问题描述
模型.py
class Event(models.Model):
id = models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False
)
host = models.ForeignKey(
Profile,
related_name="host",
on_delete=models.CASCADE
)
name = models.CharField(
verbose_name='Event Name',
max_length=200
)
seats = models.IntegerField(default=0)
price = models.IntegerField(default=0)
audience = models.ManyToManyField(
Profile,
related_name="audience"
)
discription = models.TextField(
verbose_name='About the event',
null=True,
blank=True
)
time_start = models.DateTimeField(verbose_name='Time of starting of event')
time_end = models.DateTimeField(verbose_name='Time of ending of event')
address1 = models.CharField(
"Address line 1",
max_length=1024,
)
address2 = models.CharField(
"Address line 2",
max_length=1024,
null=True,
blank=True
)
zip_code = models.CharField(
"ZIP / Postal code",
max_length=12,
)
city = models.CharField(
"City",
max_length=1024,
)
country = models.CharField(
"Country",
max_length=3,
)
视图.py
class PostEvent(APIView):
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
def post(self, request):
instance = Event(host=request.user)
instance = EventSerializer(instance, data=request.data) #after using shell, i can tell this line is creating problem i guess
if instance.is_valid():
event = instance.save()
return Response(event.data, status=status.HTTP_201_CREATED)
else:
return Response(instance.errors, status=status.HTTP_400_BAD_REQUEST)
在views.py 中,我清楚地传递了带有主机的实例,以及来自请求的其他数据。所以他们应该结合起来,应该有一个带有uuid的主机,但它没有通过is_valid(),并给出下面的错误。
序列化程序.py
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = '__all__'
错误/不知道为什么
{
"host": [
"This field is required."
],
"audience": [
"This list may not be empty."
]
}
这是我从邮递员那里收到的,请解释我如何正确传递主机。
解决方案
您将用户传递给主机,但您将其定义为配置文件的 FK。那正确吗?
推荐阅读
- flutter - 颤动的新Web项目未在Android模拟器中显示
- python - OpenCV 需要 Android SDK 工具版本 14 或更新版本
- python - Pandas:根据不同数据帧的多列中的匹配值在一个数据帧中创建一列
- linux - 如何运行心跳功能
- java - 此 PDF 的幻数之前的字节顺序标记是什么?
- android - 如何在我的 Samsung A51 Android 10 的“内部存储”文件夹(主要外部存储)中创建文件?
- rust - 打印结构的值 - 出现错误,预期为 `,` 或 `}` 之一
- java - Gson 将 List 字段序列化为字符串并保留 SerializedName
- r - 总和(计数)错误:参数的“类型”(闭包)无效
- swift - 仅通过用户的 UID 访问用户信息