Django Admin:在模型的同时添加外键

时间:2015-06-14 23:06:01

标签: python django django-models django-admin

我是Django的新手,我正在学习管理界面的绳索。我有一个带有几个外键的模型。这些外键然后引用其他外键。在我注册Property模型然后尝试添加它之后的管理员网站上,我给了每个外键模型的下拉框。但是,此下拉框仅列出现有外键。 (http://i.stack.imgur.com/e5LCu.png

如果不是下拉框而是有额外的字段,那么我可以在添加属性模型时添加外键模型。这样我就不必手动添加外键然后返回并添加更多内容,然后返回并最后添加属性数据。

我该怎么做?这感觉就像一个简单的问题,但经过激烈的谷歌搜索,我仍然找不到答案,所以我提前道歉。

我的两个模特的例子:

  class Address(models.Model):
      state = models.ForeignKey('State')
      address1 = models.CharField(max_length=200)
      address2 = models.CharField(max_length=200)
      city = models.CharField(max_length=200)
      postal_code = models.CharField(max_length=200)


 class Property(models.Model):
     address = models.ForeignKey('Address', blank=True, null=True)
     borrower = models.ForeignKey('Person', blank=True, null=True)
     company = models.ForeignKey('Company', blank=True, null=True)
     contract = models.ForeignKey('Contract', blank=True, null=True)
     loan_balance = models.IntegerField()
     name = models.CharField(max_length=200)
     primary_email = models.CharField(max_length=200)
     primary_phone = models.CharField(max_length=200)
     property_no = models.IntegerField()

我的admin.py示例:

  # Register your models here.

  class PropertyAdmin(admin.StackedInline):
      model = Property

  class PersonAdmin(admin.StackedInline):
      model = Person

  class CompanyAdmin(admin.StackedInline):
      model = Company

  class ContractAdmin(admin.StackedInline):
      model = Contract

  class CompletePropertyAdmin(admin.ModelAdmin):
      inlines = [PropertyAdmin, PersonAdmin, CompanyAdmin, ContractAdmin]   

  admin.site.register(Property)

1 个答案:

答案 0 :(得分:0)

问题的一个解决方案可以是,使用两个模型中的字段创建自定义表单,并在保存值时,首先创建Address模型的实例,然后使用该实例保存最终的Property模型。 / p>