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知道如何使用现有的字段来执行此操作,请告诉我