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

kcugc4gi  于 2022-11-19  发布在  Go
关注(0)|答案(1)|浏览(120)

我正在学习Django,我正在做一个测试项目。
所以在我的www.example.com中models.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)

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

2ul0zpep

2ul0zpep1#

首先,您将创建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)

相关问题