如何从Django多对多领域获取数据?

时间:2014-07-28 09:56:00

标签: django django-models

有人可以向我解释如何从多个领域获取数据。 我的模特:

class Subcat(models.Model):
    subcat_name = models.CharField(max_length=128,default='Unknown')
    active1 = models.BooleanField()
    variants = models.ManyToManyField('Variants')
    lang = models.ForeignKey('Lang',default=1)

    def __unicode__(self):
        return self.subcat_name

class Variants(models.Model):
    lang = models.ForeignKey('Lang')
    name  = models.CharField(max_length=256)
    descr = models.CharField(max_length=500,default='Unknown')

    def __unicode__(self):
        return self.name

class Lang(models.Model):
    name  = models.CharField(max_length=25)
    code  = models.CharField(max_length=5)

    def __unicode__(self):
        return self.name

在类Subcat用户定义子类别中,默认使用英语,例如:

subcat_name = "Museums"
active1 = 1
variants = Muzeji,...
lang = en

所以默认语言是英语,当我想要英语subcat时很容易获得

subcategory="Museums"
data= Subcat.objects.get(subcat_name=subcategory)

所以我的问题是:当用户使用其他语言时,例如

subcategory= "Muzeji"
data=?????

如何从那些将返回id的信息中进行查询,其中subcat_name是博物馆......

有人可以详细解释我如何从多个到多个字段中获取数据或指向一些好的教程......

1 个答案:

答案 0 :(得分:2)

subcat= Subcat.objects.get(subcat_name=subcategory)
variant=subcat.variants.filter(name="Muzeji")
lang=variant.lang.name
  1. 获取subcat对象
  2. 获取名称=“Muzeji”
  3. 的相应变体
  4. 现在您可以直接访问lang:
  5. 如果你想返回id:

    variant=subcat.variants.filter(name="Museums").values('id')