Python django模型帮助,涉及m2m和foreignkey
好吧,这对其他人来说可能真的很容易解决,但我真的很困惑如何解决这个问题 首先,我有一个模型a,它有多个字段,这些字段与特定表有多对多关系。比如说Python django模型帮助,涉及m2m和foreignkey,python,database,django,models,django-orm,Python,Database,Django,Models,Django Orm,好吧,这对其他人来说可能真的很容易解决,但我真的很困惑如何解决这个问题 首先,我有一个模型a,它有多个字段,这些字段与特定表有多对多关系。比如说 class A(models.Model): field1 = models.ManyToMany('field1Collection') field2 = models.ManyToMany(field2Collection') class field1Collection(models.Model): descriptio
class A(models.Model):
field1 = models.ManyToMany('field1Collection')
field2 = models.ManyToMany(field2Collection')
class field1Collection(models.Model):
description = models.TextField()
class field2Collection(models.Model):
description = models.TextFIeld()
不管怎么说,这就是我想要实现的。我需要写另一个模型,可以举行排名系统。例如,我想创建一个可以定义的记录
我有x个等级(例如3个):
因此,我基本上希望能够从field1Collection和field2Collection表中选择对象,并为它们分配等级。我尝试使用ForeignKey和m2m字段构思方案,但它们都出错了,因为模型需要“提前”知道我需要引用哪个集合集。这很有意义吗?有人能帮忙吗?您需要field1Collection和filed2Collection有一个共同的祖先类,您可以使用foreignKey引用它。请参阅django关于继承的文档。您可以使用
GenericForeignKey
关系解决此问题
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
class RankItem(models.Model):
rank = models.IntegerField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
def __unicode__(self):
return self.rank
普通ForeignKey只能“指向”另一个模型,这意味着如果RankItem模型使用ForeignKey,则必须选择一个且仅选择一个模型来存储标记。应用程序提供了一种特殊的字段类型,该字段类型可以解决此问题,并允许与任何模型建立关系您建议采用哪种继承方式?