Django - 你能解释一下吗?

时间:2011-10-28 19:00:48

标签: django django-forms

我有三种模式:

  1. System_Contact
  2. System
  3. Contact_list
  4. Contact_List模型有两个字段:contactsys,毫不奇怪,这只是一个将联系人列表与每个系统相关联的manyToMany模型。我有modelForm用于向系统的联系人列表添加新联系人:

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

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

    为什么?!

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

1 个答案:

答案 0 :(得分:1)

这不是它的默认行为,而是contact_list表单中的select小部件显示来自联系表的所有条目。

每个模型都是数据库中的表,因此您有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表中的每一行都是系统表中特定机器与联系表中联系人列表之间的关系