我的数据库都有许多表;通过主要键和外键相互联系的三个是" vendor_details"," channel_details"one_answers" mso_details"
models.py
class Vendor_Details(models.Model):
class Meta:
verbose_name_plural = "Vendor_Details"
vendor_name = models.CharField(primary_key = True,max_length=50)
mso_id = models.CharField(unique = True, max_length=20)
class Channel_Details(models.Model):
class Meta:
verbose_name_plural = "Channel_Details"
channel_id = models.CharField(primary_key = True, max_length=20)
vendor_name = models.ForeignKey(Vendor_Details, on_delete=models.CASCADE)
channel_logo = models.CharField(max_length=50)
channel_name = models.CharField(max_length=50)
class MSO_Details(models.Model):
class Meta:
verbose_name_plural = "MSO_Details"
mso_id = models.ForeignKey(Vendor_Details, on_delete=models.CASCADE)
channel_id = models.ForeignKey(Channel_Details, on_delete=models.CASCADE)
channel_number = models.PositiveIntegerField()
所以,Channel_details链接到带有vendor_name的vendor_details和MSO_Details分别与vendor_details和Channel_details链接到MSO_ID和Channel_id。
现在,我在django的管理员的MSO_Details表中,并尝试单击"通道ID列的编辑图标" I获得新的窗口,然后使用消息Channel_ details with ID "CH6" doesn't exist. Perhaps it was deleted?
打开一个新窗口,这可能是因为Channel_id是参考表的主要密钥,并且DB将不允许DB变化?但是随后消息应该有所不同。我该如何处理这种情况?我单击了CH_006的编辑和消息显示CH6。我很困惑这里发生了什么,Django的DB指的是什么?注意:单击"添加"按钮后,我可以很好地添加新的Channel_details。
我在过去两天里遇到了这种问题,问题是1.如果最初将详细信息添加到新表单中,则不添加所需的正确字段。(我将文本和整数都包括在一个仅是Charfield的字段中(
2.错误再次出现时的另一个解决方案是删除迁移和数据库本身并再次创建一个新数据库(使用相同的数据库名称(。
在我的情况下,我有一个现有的SQLite数据库,我一直在迁移到Django。我所有的实体都有一个UUID列作为其主要键。
我已经将主密钥列设置为django.models.UUIDField
,以为Django会支持它,但不支持它。
因此,我将其转换为带有uuid的文本字段作为默认值,它再次开始工作。
class Model(models.Model):
# id = models.UUIDField(primary_key=True)
id = models.TextField(primary_key=True, default=uuid.uuid4)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True