1
我試圖在管理員中覆蓋save()
方法,因此當我的發佈者用戶創建他們的客戶用戶時,發佈者字段會自動分配當前用戶的值。Django:爲外鍵對象分配當前用戶的值
ValueError: Cannot assign "User: foo": "SimpleSubscriber.publisher" must be a "Publisher" instance.
我用這個教程開始:here.
def save_model(self, request, obj, form, change):
if not change:
obj.publisher = request.user
obj.save()
這是保存方法重寫。誰可以訪問管理員的用戶只能是出版商,都發布和SimpleSubscriber模型是用戶模型:
class Publisher(User):
def __unicode__(self):
return self.get_full_name()
class SimpleSubscriber(User):
publisher = models.ForeignKey(Publisher)
address = models.CharField(max_length=200)
city = models.CharField(max_length=100)
state = USStateField()
zipcode = models.CharField(max_length=9)
phone = models.CharField(max_length=10)
date_created = models.DateField(null=True)
sub_type = models.ForeignKey(Product)
sub_startdate = models.DateField()
def __unicode__(self):
return self.last_name
我能,以便分配給每個新SimpleSubscriber當前的發佈者用戶更換request.user
?
第二個建議奏效。第一個返回錯誤,說'用戶'沒有定義。但是我對第一個建議非常好奇,因爲我沒有完全理解**的目的,也找不到任何關於_meta的文檔。我在哪裏可以瞭解更多關於訪問這些元信息並使用它的信息? – 2012-07-20 15:59:35
第一個只會有你描述的錯誤,因爲你沒有首先導入'User'。存在'**'語法來展開字典以提供關鍵字參數:http://docs.python.org/reference/expressions.html#calls; '_meta'是django內部的一部分,參見https://docs.djangoproject.com/en/dev/internals/,你也可以查看源代碼,並使用'dir'探索內容(查看標準庫參考)。 – Marcin 2012-07-20 17:51:18
感謝您的鏈接 – 2012-07-24 19:13:28