如何将字段创建到依赖于另一个的模型中?



我正在学习Django,我在一个测试项目中工作。

所以在我的模型。py我有这个(我知道这是错误的,但我不知道怎么做):

from django.db import models
class Diagram(models.Model):
name = models.CharField(max_length=100)
img = models.ImageField(upload_to='img/diagrams/', help_text="Size required: height = 1050px, width = 1506px.", max_length=None)    

def __str__(self):
return self.name
class DiagramReferences(Diagram):
quantity_of_references = models.IntegerField()
for i in range(quantity_of_references):
title = models.CharField(max_length=50)
coords = models.CharField(max_length=50)

所以我想在两个模型之间建立一个关系,第一个:Diagram包含Diagram的名称和各自的图像。在另一个中,我想选择第一个已经创建的,并分配他有多少引用,并为每个引用创建一个字段。

首先创建Diagram。您应该为您的上传目录创建一个函数:

def user_directory_path_img(instance, filename):
# file will be uploaded to MEDIA_ROOT / user_<id>/<filename> if you've declared MEDIA path
return 'img/diagrams/{0}/{1}-{2}'.format(instance.name, datetime.now(tz=pytz.UTC).date(), filename)
class Diagram(models.Model):
name = models.CharField(max_length=100)
img = models.ImageField((upload_to=user_directory_path_img, null=True, blank=True)   

def __str__(self):
return self.name

然后你要做一个ForeignKey字段。正如vinkomlacic所说,你不能创造动态关系,建议不要搞砸它。如果你想有不同的字段,要么用多个条目或数组创建一个TextField,要么只创建你认为需要的最大数量的字段,并将它们设置为blank=True, null=True

class DiagramReferences(models.Model):
diagram = models.ForeignKey(Diagram, on_delete=models.CASCADE, blank=True, null=True, default=None)
title = models.CharField(max_length=50, blank=True, null=True)
coords = models.CharField(max_length=50, blank=True, null=True)
extra = models.CharField(max_length=50, blank=True, null=True)

最新更新