【发布时间】:2021-03-19 08:39:14
【问题描述】:
models.py
class UserAttributes(models.Model):
airport = models.ForeignKey('airport.Airport', related_name='user_attributes_airport', on_delete=models.SET_NULL, null=True, blank=True)
location = PointField(blank=True, null=True)
user = models.ForeignKey(
'users.AerosimpleUser', related_name='user_attributes',
on_delete=models.CASCADE, null=True, blank=True)
views.py
class LocationViewSet(viewsets.ModelViewSet):
serializer_class=LocationRetrieveSerializer
http_method_names = ['get', 'post', 'patch', 'put']
def get_permissions(self):
switcher = {
'create': [IsAuthenticated],
'list': [IsAuthenticated],
'retrieve': [IsAuthenticated],
'update': [IsAuthenticated],
'partial_update': [IsAuthenticated],
}
self.permission_classes = switcher.get(self.action, [IsAdminUser])
return super(self.__class__, self).get_permissions()
def get_queryset(self):
return UserAttributes.objects.filter(
airport__id=self.request.user.aerosimple_user.airport_id).order_by('pk')
序列化器.py
class LocationRetrieveSerializer(serializers.ModelSerializer):
class Meta:
model = UserAttributes
fields = '__all__'
def create(self, validated_data):
if UserAttributes.objects.filter(user_id=self.context["request"].data['user'],airport_id=self.context["request"].data['airport']).exists():
obj=UserAttributes.objects.get(user_id=self.context["request"].data['user'])
obj.location=self.context["request"].data['location']
obj.save()
return obj
user_attributes = UserAttributes.objects.create(validated_data)
return user_attributes
我应该做些什么改变
【问题讨论】:
-
请将完整的错误回溯添加到您的问题中!
标签: python python-3.x django django-models django-views