Джанго моделирует отношения - PullRequest
1 голос
/ 21 апреля 2019

Я создаю приложение, в котором люди размещают объявления о продаже различных вещей, таких как автомобили, квартиры, гаджеты и т. Д. У меня есть модели со своими собственными специальными полями для каждого элемента, например: CarModel, ApartmentModel, SmartphoneModel и т. Д. *

И у меня есть модель Article: и я хочу добавить поле item_of_sale , которое может быть экземпляром различных моделей (например, CarModel или ApartmentModel).

class Article(models.Model):

author = 
    models.ForeignKey(User,on_delete=models.CASCADE,related_name='articles' )
    category = models.ForeignKey(Category,on_delete=models.CASCADE )        
    title = models.CharField(max_length=120)
    text = models.TextField()

    item_of_sale = # ??????? models.OneToOneField I suppose

Я пытаюсь что-то вроде этого:

class CarModel(models.Model):
   ad = models.OneToOneField(Article, on_delete=models.CASCADE, 
                             related_name='item_of_sale')
   marc = models.CharField(max_length=40, choices=MARC_CHOICES)
   model = models.CharField(max_length=120, default='')
   .....


class ApartmentModel(models.Model):
   ad = models.OneToOneField(Article, on_delete=models.CASCADE, 
                             related_name='item_of_sale')
   location= models.CharField(max_length=200 )
   address= models.CharField(max_length=120)
   .....

Но django не позволяет иметь более одной модели с related_name = "item_of_sale".

У вас есть идеи, как я могу создать базу данных с такого рода отношениями. Пожалуйста, помогите. Заранее спасибо.

1 Ответ

0 голосов
/ 21 апреля 2019

связанное имя для обратного запроса. Relented name - необязательное поле, связанное должно быть уникальным. Ваша модель очень проста, вам не нужно связанное имя. Определите вашу модель без связанного названия. .

...