首页 > 解决方案 > 也通过后询问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."
    ]
}

这是我从邮递员那里收到的,请解释我如何正确传递主机。

标签: pythondjangodjango-rest-framework

解决方案


您将用户传递给主机,但您将其定义为配置文件的 FK。那正确吗?


推荐阅读