在我的專案的以下模式中,我想author在創建模型時分配類的變數,在用戶端這可以通過request.user但由于類只能從管理區域實體化,這不起作用。
class Blog(models.Model):
title = models.CharField(max_length=300)
content = RichTextField()
author = models.ForeignKey(User, related_name="Author", auto_created= True, on_delete=
models.CASCADE)
date = models.DateTimeField(auto_now_add= True)
uj5u.com熱心網友回復:
[Django-doc]auto_created=…欄位 是關于模型繼承的,它沒有添加登錄用戶:模型層是請求不知道的,并且本身沒有“登錄用戶”。因此,您將其改造成:
from django.conf import settings
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=300)
content = RichTextField()
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
related_name='blogs',
on_delete=models.CASCADE,
editable=False,
)
date = models.DateTimeField(auto_now_add=True)
在模型的模型管理員中Blog,您可以使用:
from django.contrib import admin
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
# …
def save_model(self, request, obj, form, change):
obj.author = request.user
return super().save_model(request, obj, form, change)
注意:
related_name=…引數 [Django-doc] 是反向關系的名稱,因此在這種情況下是從Blog模型到User模型。因此,將其命名為與前向關系相同的名稱(通常)沒有多大意義。因此,您可能需要考慮將關系重命名為Authorblogs。
注意:通常使用[Django-doc]參考用戶模型比直接使用模型 [Django-doc]更好。有關更多資訊,您可以查看檔案的參考模型部分。
settings.AUTH_USER_MODELUserUser
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/526637.html
