我是DJANGO的新手,但是我的模型遇到了问题。我做了很多尝试,但找不到找到结果的方法。
class Destination(models.Model):
name = models.CharField(max_length=100)
img = models.ImageField(upload_to='pics')
desc = models.TextField()
price = models.IntegerField()
offer = models.BooleanField(default = False)
在上述Model类中,我希望在下面Model类中具有相同的'name'字段值
class Destination_individual(models.Model):
# name = models.CharField(max_length=100, default = None)
name =
img = models.ImageField(upload_to='pics_indiavidual')
caption = models.CharField(max_length=100)
img2 = models.ImageField(upload_to='pics_indiavidual')
caption2 = models.CharField(max_length=100)
img3 = models.ImageField(upload_to='pics_indiavidual')
caption3 = models.CharField(max_length=100)
img4 = models.ImageField(upload_to='pics_indiavidual')
caption4 = models.CharField(max_length=100)
img5 = models.ImageField(upload_to='pics_indiavidual')
caption5 = models.CharField(max_length=100)
我的第一个类(目标)已迁移到服务器,并且我希望该数据库(目标)中的“名称”字段值显示在Destination_individual数据库的“名称”字段中。
请指导我该怎么做。
非常感谢。
答案 0 :(得分:0)
不确定您似乎已经裁剪的第一个模型是什么,但是可以说它叫做Person。
您应该拥有
而不是其他名称person = models.ForeignKey(Person, on_delete=models.CASCADE)
然后您可以使用
引用Destination_individual的名称person.name
P.S。根据Django命名标准,您的类实际上应命名为DestinationIndividual。没什么大不了,但仍然如此。
答案 1 :(得分:0)
只有在目的地名称为唯一时,这才在概念上可行,因为否则该名称可能引用多个Destination
。
因此,我们可以将该字段设置为唯一字段,例如:
class Destination(models.Model):
name = models.CharField(max_length=100, unique=True)
img = models.ImageField(upload_to='pics')
desc = models.TextField()
price = models.IntegerField()
offer = models.BooleanField(default = False)
然后,我们可以通过设置ForeignKey
field [Django-doc]来定义引用name
的{{1}}字段的to_field=...
parameter [Django-doc],例如:
Destination
Django将在数据库中创建一个class Destination_individual(models.Model):
name = ForeignKey(Destination, to_field='name', on_delete=models.CASCADE)
img = models.ImageField(upload_to='pics_indiavidual')
caption = models.CharField(max_length=100)
img2 = models.ImageField(upload_to='pics_indiavidual')
caption2 = models.CharField(max_length=100)
img3 = models.ImageField(upload_to='pics_indiavidual')
caption3 = models.CharField(max_length=100)
img4 = models.ImageField(upload_to='pics_indiavidual')
caption4 = models.CharField(max_length=100)
img5 = models.ImageField(upload_to='pics_indiavidual')
caption5 = models.CharField(max_length=100)
列,该列存储name_id
对象的名称。它将创建外键约束,以便大多数数据库将验证Destination
引用的是name_id
记录中的有效name
。
话虽这么说,通常最好让Destination
引用模型的主键(ForeignKey
)。这样,您就可以使用AutoField
,并且可以使您的模型更加统一 。