非托管模型的Django外键

非托管模型的Django外键,django,django-models,Django,Django Models,假设我有两个简单的模型: class Employee(models.Model): id = models.IntegerField(max_length=9, primary_key=True) last_name = models.CharField(max_length=25) class Meta: db_table = 'employee_view' managed = False 及 我确实: e = Employee.o

假设我有两个简单的模型:

class Employee(models.Model):
    id = models.IntegerField(max_length=9, primary_key=True)
    last_name = models.CharField(max_length=25)

    class Meta:
        db_table = 'employee_view'
        managed = False

我确实:

e = Employee.objects.get(last_name='Tesla')
<Employee: Tesla>
但我有一个正直的错误和巨大的悲伤:

IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`django_xrdb3`.`publication_author`, CONSTRAINT `employee_id_refs_emp_id_33542a34` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`emp_id`))')
我怀疑这是因为表
employees
不存在(它实际上是一个视图)。因此,FK约束会抛出一个错误

不过,这应该是可行的。可以吗? 顺便说一句,我正在使用MySQL


提前谢谢

这在MySQL级别是不可能的:

基本上,您不能为没有索引的列创建外键,也不能在视图上创建索引列

我没有试过,但您可以研究一下:

这是一种在MySQL中创建“物质化”视图的方法,作为真实的表,这样您就可以使用它作为Django模型的支持,外键可能会起作用

a = Author.objects.create(employee=e)
IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`django_xrdb3`.`publication_author`, CONSTRAINT `employee_id_refs_emp_id_33542a34` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`emp_id`))')