Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django自动字段、继承、多个多个字段和。。。不保存_Python_Django_Inheritance_Subclass_Manytomanyfield - Fatal编程技术网

Python django自动字段、继承、多个多个字段和。。。不保存

Python django自动字段、继承、多个多个字段和。。。不保存,python,django,inheritance,subclass,manytomanyfield,Python,Django,Inheritance,Subclass,Manytomanyfield,我有一个类和一个ManyToManyField和一个子类和一个AutoField子ID。Django使用子ID的值保存ManyToManyField实例,而不是使用Class主键的值保存实例。像这样: class Class( models.Model ): products= models.ManyToManyField( Product ) class SubClass( Class): subID= models.AutoField(primary_key=True)

我有一个类和一个
ManyToManyField
和一个子类和一个
AutoField
子ID。Django使用子ID的值保存
ManyToManyField
实例,而不是使用
Class
主键的值保存实例。像这样:

class Class( models.Model ):
    products= models.ManyToManyField( Product )

class SubClass( Class):
    subID= models.AutoField(primary_key=True)
让我们假设类的最低id为15,子类的最低
subID
为3

sc= SubClass()
sc.save()
print sc.id, sc.subID

===> 16, 4
到目前为止还不错。现在添加一个产品:

p= Product()
p.save()
print p.id

===> 77

sc.products.add(p)
sc.save()

print sc.products.all()

===> []
??? 那不好。发生了什么事

dbms> select * from myapp_class_subclass where class_id = '4';
                                                           ^
id     class_id   product_id                               |
na     4          77                                       |
       ^                                                   |
       |                                                   |
       +------------------------+--------------------------+
                                |
         I used the subclass subID, not the class id.
最后一个问题是:我错过了什么吗?这种方法有缺陷吗

出于好奇:在真实的事物中,我使用了更多的
子类
,我需要
子类
实例在该子类中有一个唯一的编号。此外,我需要能够一次查询所有
子类。为了解决这个问题,我现在使用了一个自制的autofield,但我不喜欢它(干燥、亲吻等),而且它可能还不是线程安全的

因此,如果任何pythonista/djangonista知道如何使用现有的
字段来执行此操作,请告诉我