#python #django #django-models
#python #django #django-модели
Вопрос:
Я создаю приложение, в котором люди размещают объявления о продаже разных вещей, таких как автомобили, квартиры, гаджеты и т.д. У меня есть модели со своими собственными специальными полями для каждого элемента, такими как: CarModel, ApartmentModel, SmartphoneModel и т.д…
И у меня есть статья о модели: и я хочу добавить поле 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. Вам нужно прочитать о типах отношений … есть не только взаимно однозначные… вы можете использовать «один ко многим» или «многие ко многим»… Попробуйте прочитать эту статью или документы
2. Надеюсь, ваш проект получится отличным ^_ ^
3. @Kendoka ваша первая ссылка действительно помогает мне. ** Полиморфные отношения «Один ко многим» ** из ** django-полиморфный пакет ** — это то, что я искал. Спасибо. Если вы хотите добавить его в качестве ответа, я проверю его как принятый.
Ответ №1:
связанное имя предназначено для обратного запроса. смягченное имя является необязательным, поле, связанное с ним, должно быть уникальным. ваша модель очень проста, вам не нужно никакого связанного имени. `определите свою модель без связанного имени. .