0
我延長Django的用戶模式,包括一個外鍵指向像這樣(就像它在Django docs說)另一種模式:在Django製作外鍵的用戶模型擴展所需
models.py:
class Ward(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
# Extending the user model
class WardMember(models.Model):
user = models.OneToOneField(User)
ward = models.ForeignKey(Ward)
def __unicode__(self):
return self.ward.name
admin.py:
class WardMemberInline(admin.StackedInline):
model = WardMember
can_delete = False
verbose_name_plural = 'ward member'
# Define a new User admin
class UserAdmin(UserAdmin):
inlines = (WardMemberInline,)
admin.site.register(Ward)
# Re-register UserAdmin to get WardMember customizations
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
當我創建在管理界面我想需要這個新WardMember.ward
擴展新的用戶。目前它沒有強制執行。這裏是發生了什麼:
- 創建用戶成功,沒有一個病房
- 創建其他記錄用戶成功
- 編輯用戶現在不會讓我保存,除非有選擇
我一個病房我真的很喜歡上面的#1失敗。
我試着弄清楚如何使用代理對象替代save()
代替User
但這不起作用。我看着pre_save
信號,但文件明確表示這不是用來否決保存。
什麼是正確的方法?
其他信息:
- 我使用的是1.4。我看到在1.5我可以extend the user class,但我還沒有能夠更新到1.5。
我結束了Django的1.5開拓進取,但我會離開這個位置,以防有人有一個最終的答案能夠貢獻1.4工作。
你爲什麼不擴大'User'示範基地,並添加一個外鍵招架?這可能會。 –
我看到我可以用Django 1.5來做到這一點,但我在1.4上。也許我會考慮遷移,但我只有這個小東西來解決。 (更新問題以包含相關信息) – devguydavid