【问题标题】:Django two manytomanyfield one association tabledjango 两个manytomanyfield 一个关联表
【发布时间】:2014-08-01 14:03:12
【问题描述】:

我想创建一个具有两个多域的模型。我不希望 Django 创建两个关联表,但要为两个多字段创建相同的关联表。

这是我的模型:

class Tab(WModel):
    forms = models.ManyToManyField('Form', null=True, blank=True)
    fields = models.ManyToManyField('Field', null=True, blank=True)
    number = models.IntegerField(null=True, blank=True)

    class Meta:
        db_table = 'tab'

我只想创建这个关联表:

tab_assoc :
   id_tab
   id_form
   id_field
   number

【问题讨论】:

标签: python django postgresql-9.1 manytomanyfield


【解决方案1】:
class Field(models.Model):
    name = models.CharField(max_length=128)

    def __str__(self):              # __unicode__ on Python 2
        return self.name

class Form(models.Model):
    name = models.CharField(max_length=128)
    fields = models.ManyToManyField(Field, through='Tab')

    def __str__(self):              # __unicode__ on Python 2
        return self.name

class Tab(models.Model):
    field = models.ForeignKey(Field)
    form = models.ForeignKey(Form)

【讨论】:

  • 它不起作用。我可以保存一个对象选项卡,但是当我尝试在表单对象表单中保存关联“选项卡/表单”时,django 会出现此错误:“AttributeError at /form/edit/2/ Cannot set values on a ManyToManyField 它指定了一个中间模型。改用 Tab 的 Manager。"
  • 请看这个以了解stackoverflow.com/questions/3091328/…这里告诉如何在这种情况下保存数据。
  • 像这样保存你的模型。 tab = Tab(field = YOURFIELD,form=YOURFORM); tab.save()
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 2010-12-09
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
相关资源
最近更新 更多