如何获得manytomany和foreignkey的特定密钥

时间:2013-03-20 12:19:44

标签: django django-models

我有三种模式:

class Section(models.Model):
    name = models.CharField()


class ParamText(models.Model):
    text = models.TextField()


class Param(models.Model):
    name = models.CharField()
    value = models.IntegerField()
    texts = models.ManyToManyField(ParamText)
    section = models.ForeignField(Section)

这是一个简单的例子。现在我想用具体的数据创建类:

class ObjectTemplate(models.Model):
    params = models.ManyToManyField(Param)

但我想把这个模型具体的ParamText放在specyfic Param中。我的ObjectTemplate应该包含许多参数[Param](唯一会很棒),每个Param只有一个选定的ParamText。

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

首先创建一个独特的parmas [parm]使用OneToOneField代替manytomany。

并访问特定密钥:每个对象都有一个id,因此您可以使用该

让p成为Param的对象

所以要从param中获取section id,你必须使用

  
    
      

p.section.id

    
  

这将返回一个包含对象的id(primarykey)的long int。

我认为以下内容将解决每个parma问题的一个parmatext

class Section(models.Model):
    name = models.CharField()

class ParamText(models.Model):
    text = models.TextField()

class Param(models.Model):
    name = models.CharField()
    value = models.IntegerField()
    texts = models.OneToOneField(ParamText)
    section = models.ForeignField(Section)