我是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)
答案 0 :(得分:0)
问题的一个解决方案可以是,使用两个模型中的字段创建自定义表单,并在保存值时,首先创建Address模型的实例,然后使用该实例保存最终的Property模型。 / p>