更新記錄的問題我使用Django(特別是Django的管理)成爲面向客戶端功能使用PHP的網站的管理面板。我一直在搞管理看起來完全是我想要的方式,並且非常好。但是,我遇到了一些我需要解決的問題。在Django的管理更新記錄
下面是我的工作模型:
class Permissions(models.Model):
id = models.IntegerField(primary_key=True)
league_key = models.CharField(max_length=15)
commissioner_id = models.ForeignKey(Accounts, db_column='commissioner_id',
to_field='id')
status = models.IntegerField()
key = models.CharField(max_length=50)
publisher_key = models.CharField(max_length=25)
publisher_display_name = models.CharField(max_length=50)
base_league = models.ForeignKey('self', db_column='id')
share = models.IntegerField()
default_fixture_key = models.CharField(max_length=50)
def __unicode__(self):
return self.publisher_key + '/' + self.league_key
class Meta:
db_table = u'permissions'
verbose_name = 'Permissions'
verbose_name_plural = 'Permissions'
class PermissionsAdmin(admin.ModelAdmin):
list_display = ('league_key', 'publisher_key', 'commissioner_id', 'status',
'base_league', 'share', 'default_fixture_key')
list_display_links = ('league_key','commissioner_id', 'base_league')
exclude = ('id',)
第一個問題是,用於編輯現有記錄的管理形式標記中的一個字段的要求。如何告訴Django的管理員,當一個字段是必需的,而不是必需的?
我遇到的第二個問題是,當我告訴它保存此記錄時,出現以下錯誤:重複鍵值違反了唯一約束「permissions_pkey」。這導致我認爲Django沒有進行更新,它試圖執行INSERT
我也想到這可能是Postgresql相關的問題。 permissions_pkey是該表的一個約束,跟蹤用於自動遞增該表的id的序列
雖然Django文檔非常棒,但他們似乎沒有我需要的信息來弄清楚。
(編輯:挖入堆棧跟蹤,我發現這個真棒小金塊:
sql
'UPDATE "permissions" SET "league_key" = E\'l.1258472565 \', "commissioner_id" = 7,
"status" = 0, "key" = E\'cfcd208495d565ef66e7dff9f98764da \',
"publisher_key" = E\'chrishartjes.com \',
"publisher_display_name" = E\'Chris Hartjes Free Press \',
"id" = 744, "share" = 0,
"default_fixture_key" = E\'\' WHERE "permissions"."id" = 745 '
這使我認爲,我的小ForeignKey的自身項導致問題)
我編輯了您的問題並刪除了所有HTML標記。你能檢查一下'class Meta'是否正確縮進? – 2009-11-18 20:30:19
是的,對不起。 – GrumpyCanuck 2009-11-18 20:35:13