У меня есть три модели: сначала «Активность», а затем «Пользователь», и они связаны друг с другом следующим образом, а последняя - это рейтинг, который имеет внешний ключ от действия следующим образом:
модели.py
class Activity(models.Model):
name = models.CharField(blank=True, unique=True, max_length=100)
rating_average = models.FloatField(blank=True, null=True, default=0, max_length=1)
members = models.ManyToManyField(User, blank=True, related_name='activitymembers')
class ActivityRating(models.Model):
activity = models.ForeignKey(Activity, related_name='activity', on_delete=models.CASCADE, blank=True, null=True)
rate = models.IntegerField(blank=True, null=True, default=0)
created_by = models.ForeignKey(User, related_name='rate_user', blank=True, null=True, on_delete=models.CASCADE)
serializer.py
class ActivityRateSerializer(serializers.ModelSerializer):
def __init__(self, *args, **kwargs):
created_by = kwargs['context']['request'].user
super(ActivityRateSerializer, self).__init__(*args, **kwargs)
self.fields['created_by'].queryset = User.objects.filter(id=created_by.id)
class Meta:
model = ActivityRating
fields = ['id', 'activity', 'rate', 'created_by']
def create(self, validated_data):
obj = ActivityRating.objects.create(**validated_data)
obj.save()
return obj
он отлично работает, но мне нужно следующее: как добавить валидатор, который делает рейтинг невозможным, если вы не участвуете в деятельности
пожалуйста, у любого есть решение, помогите мне,
спасибо