Django建立模型关系

时间:2019-04-21 10:37:06

标签: python django django-models

我构建了一个应用程序,人们可以在其中发布待售广告,例如汽车,公寓,小工具等。我有一些模型,每个模型都有自己的特殊字段,例如: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 :(得分:0)

相关名称用于向后查询。relented名称是可选字段,相关字段必须唯一。您的模型非常简单,不需要任何相关名称。`定义没有相关名称的模型。