Если список (потенциальных) атрибутов доступен заранее, вы можете просто ввести поле базы данных для каждого из них и сохранить ненастроенные атрибуты как None
:
class Review(models.Model):
name = models.CharField(max_length=1024)
text = models.TextField()
author = models.ForeignKey(UserProfile)
place = models.ForeignKey(place)
price_rating = models.IntegerField(null=True)
location_rating = models.IntegerField(null=True)
# ...
В противном случае (если атрибуты / рейтинги являются полностью переменными), вам нужно создать другую модель для хранения ваших атрибутов (пропустите поля _rating
выше):
class ReviewAttribute(models.Model):
review = models.ForeignKey(Review, related_name='attributes')
name = models.CharField(max_length=100)
value = models.IntegerField()