к бд в сериализаторе проверить есть ли категория с таким именем, а если данные в запросе к API могут не содержат существующего родителя - не добавлять? Или такое нужно делать в View или методах моделей?
nested сериализатор ну и .select_related(fk_field) во вьюхе
Если я уже проверил наличие категории Event, как лучше сделать условие, по которому она передаётся в сериализатор для сохранения, либо не передаётся, если она неправильная? сериализация event = serializers.CharField(source='event.tag') ? class PhotoSerializer(serializers.ModelSerializer): event = serializers.CharField(source='event.tag') class Meta: model = Photo fields = ('img', 'title', 'event') class Photo(models.Model): event = models.ForeignKey(Event, null=True, blank=True, on_delete=models.PROTECT) class Event(models.Model): tag = models.CharField(max_length=256, verbose_name="Contest tag")
https://www.django-rest-framework.org/api-guide/relations/#stringrelatedfield
Про условие и проверку не очень понял, что именно проверяешь, возможно логику через annotation сделать или в SerializerMethodFied засунуть
cделал по-простому, тут проверка есть ли Event с таким названием events = Event.objects.all() for item in events: if item.tag == request.data['hashtag"]: print("sucсess")
Так, а фотографирую нужно отдавать в зависимости есть ли такой тег?
if Event.objects.filter(tag=request.data["hashtag"]).exists():
хочу сохранять все фотографии, которые приходят на сервер, но у некоторых будет тег правильный (сразу добавить ForeignKey), а у некоторых не валидный, в таком случае не указывать его в сериализации
спасибо за корректную формулировку)
Так, если я правильно понял - ты получаешь фото и связанный тег, фото сохраняешь в любом случае, а тег только если он есть в каком-то списке?
да, данные передаются request.post(data={'title': photo_name, 'event': hashtag}, files={'img': (photo_name, photo)})
Обсуждают сегодня