django-models - 在 Django 模型中反转外键关系会导致问题吗?
问题描述
问候:我创建了一个带有字符模型的 Django 应用程序,其中包含一个图像模型作为外键。这使我可以将一张图像与许多字符相关联。它作为 1:1 的关系非常有效,我创造了许多角色和图像,并祝贺自己做得很好,直到我意识到我需要将更多图像与一个角色相关联,而不是更多角色与一个图像相关联。有没有最好的方法来“逆转”这种外键关系,而不会丢失我迄今为止所做的所有工作并从头开始?
这是模型代码:
class Thumbnail(models.Model):
""" A class to represent image thumbnails."""
name = models.CharField(max_length=40)
profile = models.ImageField(upload_to='images/thumbnails', blank=True)
def __str__(self):
return self.name
class Image(models.Model):
""" A class to represent images. """
name = models.CharField(max_length=40)
profile = models.ImageField(upload_to='images/', blank=True)
scaleFactor = models.FloatField(default=0.475)
thumbnail = models.ForeignKey(Thumbnail, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.name
class Meta:
ordering = ['name']
class Character(models.Model):
"""A class to define character fields."""
firstName = models.CharField(max_length=20)
lastName = models.CharField(max_length=30, blank=True)
middle = models.CharField(max_length=20, blank=True)
age = models.CharField(max_length=3)
sex = models.CharField(max_length=1, choices=[('M', 'Male'),
('F', 'Female'),
])
profession = models.CharField(max_length=100, blank=True)
hobbies = models.CharField(max_length=200, blank=True)
physicalDescription = models.TextField(blank=True)
quirks = models.TextField(blank=True)
background = models.TextField(blank=True)
relationships = models.TextField(blank=True)
quotation = models.TextField(blank=True)
image = models.ForeignKey(Image, null=True, on_delete=models.SET_NULL)
address = models.CharField(max_length=10, unique=True)
def __str__(self):
if self.lastName:
return f"{self.firstName} {self.lastName}: {self.address}"
else:
return f"{self.firstName}: {self.address}"
class Meta:
ordering = ['address', 'firstName', 'lastName']
解决方案
推荐阅读
- android - 我正在为我的 RecyclerView 获得一个空指针,可能是因为我的上下文
- shell - 强制并行子 shell 退出主 shell
- angular - 数据绑定 ngModel 在 Angular 12 中不起作用
- javascript - 尝试使用 mongodb/mongoose 计算集合中标签的每个实例
- typescript - 破坏 json 错误属性“xxx”在可选类型的类型上不存在
- excel - Arduino Uno、PLX-DAQ 和 125Khz RFID 阅读器问题
- django - Django没有得到路径不匹配
- windows - Windows Server 2016/2019 在 Owin.dll 上错误地返回 Authenticode 签名
- c# - 接收连续输入呼叫的最佳方式?
- flutter - 不带参数调用 onGenerateRoute 函数