0

私は3つのモデルを持っています:

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を特定のParamに入れたいと思います。私のObjectTemplateには、多くのparams [Param](一意の場合は素晴らしい)が含まれている必要があり、各Paramに対して1つのParamTextのみが選択されています。

これを実現する方法は?

4

1 に答える 1

0

まず、一意の parmas[parm] を作成するには、 manytomany の代わりに OneToOneField を使用します。

特定のキーにアクセスするには:すべてのオブジェクトにはIDがあるため、それを使用できます

p を Param のオブジェクトとする

パラメータからセクションIDを取得するには、使用する必要があります

p.section.id

これは、オブジェクトの ID (主キー) を含む long int を返します。

以下は、パルマの問題ごとに1つのパルマテキストを解決すると思います

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)
于 2013-03-20T19:21:30.993 に答える