Что именно означает имя обратного запроса в связанной с ним модели в Django?
У меня практически та же проблема, что и в Django - обратное столкновение имен запросов.
для следующего кода:
class Supplier(models.Model):
unique_id = models.IntegerField(unique=True)
name = models.CharField(max_length=255, unique=True)
rating = models.FloatField(null=True)
last_updated = models.DateTimeField(auto_now=True)
default_tariff = models.ForeignKey('Tariff')
class Tariff(models.Model):
name = models.CharField(max_length=255)
supplier = models.ForeignKey(Supplier)
end_date = models.DateField(null=True, blank=True)
payment_method = models.ManyToManyField(PaymentMethod)
region = models.ManyToManyField(Region)
Мой вопрос: почему имя обратного запроса для Supplier.default_tariff
конфликтует с именем поля Tariff.supplier
. Я прочитал документацию и думаю, что это должно быть что-то вроде Supplier.default_tariff_set
?
Даже если бы не было явных противоречий (в вашем фрагменте сгенерированные обратные аксессоры должны быть Product.category_set
и Category.product_set
), я бы сказал, что Django пытается быть полезным, чтобы вы не совершали ошибок относительно обратных аксессоров в дальнейшем.
Как вы отметили, вы можете установить related_name='+'
, чтобы не создавать обратный аксессор вообще, но я бы, вероятно, назвал обратный аксессор как-то вроде related_name='featured_product_for_categories'
.
В конце концов, ваша модель данных позволяет продукту быть представленным в нескольких категориях, и даже в категориях, в которые он не входит.