Ich bekomme nicht null Contraint fehlgeschlagen Fehler beim Posten einer Gruppe. Wie soll ich das beheben? Ich möchte den Benutzer nicht in der API anzeigen, also habe ich ihn nicht in den Serializer-Feldern verwendet. Muss ich es dort zwangsweise hinzufügen?NOT NULL Constraint fehlgeschlagen: device_api_devicegroup.owner_id
Hier ist mein Modell, Serializer und APIView
class DeviceGroup(models.Model):
token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
name = models.CharField(max_length=250, blank=False, null=False)
owner = models.ForeignKey(User, blank=False, null=False)
class DeviceGroupSerializer(serializers.ModelSerializer):
id = serializers.UUIDField(source='token', format='hex', read_only=True)
class Meta:
model = DeviceGroup
fields = ['id','name']
class DevicesGroupsAPIView(APIView):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = DeviceGroupSerializer
def get_object(self, user, token):
try:
return BaseDevice.objects.filter(owner=user).get(token=token)
except ObjectDoesNotExist:
return error.RequestedResourceNotFound().as_response()
def get(self, request, format=None):
"""
Returns a list of groups
"""
reply = {}
try:
groups = DeviceGroup.objects.filter(owner=request.user)
reply['data'] = DeviceGroupSerializer(groups, many=True).data
except:
reply['data'] = []
return Response(reply, status.HTTP_200_OK)
def post(self, request, format=None):
"""
create a new group
"""
print('request.data', request.data)
print('user', request.user)
serializer = DeviceGroupSerializer(data=request.data)
print('serializer', serializer)
if serializer.is_valid():
serializer.save()
return Response(serializers.data, status.HTTP_200_OK)
return Response(serializer.errors, status.HTTP_204_NO_CONTENT)
Worauf sollte der 'Besitzer' gesetzt werden, wenn er in der API weggelassen wird? –
Ich möchte nicht, dass der Besitzer in der Listenansicht erscheint. Für das Posten sollte es wissen, welcher Benutzer gepostet hat, weil ich die Gruppen basierend auf seinem Besitzer filtere. – pythonBeginner