我試圖創建一個處理以下一個Django模型的首選項目:設置一個多到一個在Django
- 的
Item
可以有幾個Name
秒。 - 其中
Item
的Name
是其主要的Name
,即Name
顯示爲Item
。
(型號名稱已更改爲保護無辜者。)
的models.py
我得看起來像:
class Item(models.Model):
primaryName = models.OneToOneField("Name", verbose_name="Primary Name",
related_name="_unused")
def __unicode__(self):
return self.primaryName.name
class Name(models.Model):
item = models.ForeignKey(Item)
name = models.CharField(max_length=32, unique=True)
def __unicode__(self):
return self.name
類元: 訂貨= [ '名']
admin.py
的樣子:
class NameInline(admin.TabularInline):
model = Name
class ItemAdmin(admin.ModelAdmin):
inlines = [ NameInline ]
admin.site.register(Item, ItemAdmin)
它看起來像數據庫架構工作正常,但我有問題的管理員,所以我不知道在這一點上的任何事情。我的主要問題是:
- 我怎麼到
primaryName
需要是Name
S中的項目之一正在編輯的管理員解釋一下嗎? - 有沒有辦法自動設置
primaryName
到第一個Name
發現,如果primaryName
沒有設置,因爲我使用內聯管理員名稱?
編輯:蕩,我忘了這仍然是開放的。無論如何,我重新開始重做模型,用Item
中的名稱(CharField
)替換primaryName
,並將Name
更名爲Alias
。這不能做我想做的事(只搜索一個表的名稱),但我不能讓primaryName
工作,如果它沒有null=True
,因爲Item
在任何Name
創建之前得到保存,這意味着任何嘗試自動分配Name
會看到一個空的QuerySet
並失敗。
我可以看到它的工作的唯一辦法是讓Name
的節約常規自動設置本身作爲其母公司的primaryName
如果primaryName
是NULL
,這只是沒有跟我好坐。
雖然不是一個確切的答案,但這個答案是最接近的,並且在其他地方證明是有用的。 – 2010-04-20 13:09:39