Добавление в DRF serializer объекта модели
Есть модель User которая создается самой первой. После чего юзер может либо создать магазин, где он будет менеджером(лицом создавшим сей магазин), либо будет покупателем. И вот создается новый объект Shop , в который попадают данные из request соответственно,
class ShopSerializers(serializers.ModelSerializer):
user = serializers.StringRelatedField()
class Meta:
model = Shop
fields = "__all__" # ('id','name', 'url', 'file', "shop_manager")
#модель
class Shop(models.Model):
name = models.CharField(max_length=50)
url = models.URLField(max_length=200, blank=True)
slug = models.SlugField(unique=True, blank=True,)
file = models.FileField(blank=True, upload_to=None, max_length=100)
shop_manager = models.ForeignKey(User, blank=True,
verbose_name="Администратор магазина",
on_delete=models.CASCADE)
state = models.BooleanField(default=True)
так вот, заполняя данные при POST, я хочу что бы shop_manager заполнялся автоматически, беря значение зарегистрированного пользователя т.е. request.user.id Но мои попытки во вью не дают нужного результата, в итоге я получаю ошибку.
class ShopView(APIView):
def post(self, request, *args, **kwargs):
if request.user.is_authenticated:
# Вот один из вариантов, странно почему не работает:
serializer = ShopSerializers(data={'name': request.data['name'],
'file': request.data['file'],
'shop_manager': request.user.id, # Вот эта вот часть
}, partial=True)
if serializer.is_valid():
# shop_manager = User.objects.get(id=request.user.id)
# Shop.objects.update(shop_manager=request.user.id)
# shop = serializer.save()
return Response(serializer.data)
Каким образом я могу передать в data непосредственно юзера, как это делается в админке? Полученная ошибка
ОШИБКА: значение NULL в столбце "shop_manager" отношения "shop_shop" нарушает ограничение NOT NULL
DETAIL: Ошибочная строка содержит...