我有很多表的数据库;其中三个通过主键和外键相互链接的是“Vendor_Details”,“Channel_Details”和“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表中,并尝试单击CHANNEL ID列的编辑图标,我打开一个新窗口,显示消息Channel_ details with ID "CH6" doesn't exist. Perhaps it was deleted?
可能是因为channel_id是参考表和DB的主键不允许这些变化?但那时的信息应该是不同的。我该如何处理这种情况?我点击编辑CH_006,消息显示CH6。我很困惑在这里发生什么,django的DB在这里引用了什么?
注意:我可以在点击添加按钮后添加新的CHANNEL_DETAILS。
答案 0 :(得分:0)
过去两天我遇到了这个问题,问题是 1.如果最初在新表单中添加详细信息,则不添加所需的正确字段。(我将文本和整数都包含在仅为CharField的字段中)
2.错误再次出现时的另一个解决方案是删除迁移和数据库本身并再次创建新数据库(使用相同的数据库名称)。
答案 1 :(得分:0)
就我而言,我有一个现有的 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