【问题标题】:Django - can you explain this?Django - 你能解释一下吗?
【发布时间】:2011-10-28 19:00:48
【问题描述】:

我有三个模型:

  1. System_Contact
  2. System
  3. Contact_list

Contact_List 模型有两个字段:contactsys,而且毫不奇怪,它只是一个多对多模型,用于将联系人列表与每个系统相关联。我有modelForm 用于将新联系人添加到系统的联系人列表中:

   class Add_Contact_Form(ModelForm):
       class Meta:
           model = Contact_List
           fields = ('contact',)

很简单,对吧?我的困惑是:即使Contact_List 模型有很多很多重复的contacts(因为一个联系人可以与许多系统相关联)每个联系人在表单的Select 小部件中只显示一次.

为什么?!

我的意思是,这对于我的目的来说是一个很好的默认行为,但我想确保这实际上是我可以依赖的 正确 默认行为,而不是我所做的一些随机错误现在正好适合我。

【问题讨论】:

  • 重复的联系人进入,唯一的联系人出来。无法解释。

标签: django django-forms


【解决方案1】:

这不是默认行为,而是您的contact_list 表单中的选择小部件正在显示联系人表中的所有条目。

每个模型都是数据库中的一个表,因此您有 3 个表:

  • ContactTable - 表格中的每一行都是一个人
  • SystemTable - 表中的每一行都是一台计算机(为了争论)
  • ContactListTable - 其中每一行都是系统和用户列表之间的映射

如果这是您想要做的,您应该具备以下条件:

class Contact(models.Model):
    name = ...

class System(models.Model):
    type = ...

class ContactList(models.MOdel):
    system = models.ForeignKey(System)
    contacts = models.ManyToManyField(Contact)

这意味着 ContactList 表中的每一行都是系统表中的特定机器与联系人表中的联系人列表之间的关系

【讨论】:

  • OOoohh..... 拍前额 当然!我应该知道的。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2011-08-22
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
相关资源
最近更新 更多