2015-11-30 7 views
2

Я положил круговой Foreign Key в 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) 

ошибка:

Reverse имя запроса для столкновений 'Supplier.default_tariff' с полем названием 'Tariff.supplier'. СОВЕТ: переименуйте поле «Tariff.supplier» или добавьте/измените аргумент related_name в поле определения «Supplier.default_tariff».

ответ

4

Чтобы избежать этого вы можете использовать related_name:

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', related_name='+') 

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) 
+0

Совершенного спасибо! – Yunti

Смежные вопросы