我需要一个字段的默认创建值才能成为当前登录的用户

问题描述 投票:0回答:1

我是Django的新手。我正在开发票证系统,因此我希望用户能够跟踪他们创建的票证。我试图将CurrentUserDefault添加到序列化程序中,但出现了非常无用的400错误。

型号:

class RepairTicket(models.Model):
desc = models.TextField()
createdBy = models.ForeignKey(User, related_name='repair_user', on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
resolved = models.BooleanField(default=False)
equipment = models.ForeignKey(Equipment, related_name='equipment', on_delete=models.CASCADE)
operable = models.BooleanField(default=False)
affectsProduction = models.BooleanField(default=False)

def __str__(self):
    return "{} - {}".format(self.desc, self.equipment)
class Meta:
    ordering = ["-created"]

序列化器:

class RepairTicketSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
    representation = super(RepairTicketSerializer, self).to_representation(instance)
    representation['created'] = instance.created.strftime("%m-%d-%Y")
    return representation
class Meta:
    model = RepairTicket
    #fields = ()
    fields = '__all__'
    depth = 1

查看:

class RepairTicketViewSet(viewsets.ModelViewSet):
queryset = RepairTicket.objects.all()
serializer_class = RepairTicketSerializer
django django-rest-framework
1个回答
0
投票
# You have to write create method in the serializer, so that you can get the values and put the value in your database table according to your requirement.

def create(self, validated_data):
    request = self.context["request"]

    desc = request.data.get("desc", None)
    resolved = request.data.get("resolved", None)
    ...

    repair_ticket = RepairTicket.objects.create(
        desc='Blog Title',
        createdBy=request.user,
        resolved=resolved,
        ...
        ...
    )
    return repair_ticket




# Write to_representation in the serializer, so that you can customize the response of the API.

def to_representation(self, instance):
    representation = super(RepairTicketSerializer, self).to_representation(instance)
    representation['created'] = instance.created.strftime("%m-%d-%Y")
    representation['createdBy'] = instance.createdBy.username
    return representation
© www.soinside.com 2019 - 2024. All rights reserved.