[英]Django Admin Form, Set the default value of readonly Field (User Foreign Key Field )
我目前正在開發一個多供應商電子商務網站,在 model 中,每個項目都有一個用戶,我想在添加項目時保存一個用戶(只讀和項目外鍵),我不想顯示用戶字段,如果我使用 readonly_fields 所以我的用戶將是 null,我該如何實現,請幫助我
管理員
class ItemAdd(admin.ModelAdmin):
list_display = ['name', 'price','minimum_order','status']
list_display_links = ['name', 'price','minimum_order',]
search_fields = ['name', 'description']
ordering = ('-price',)
list_filter = ['price', 'status', 'category']
list_per_page = 25
list_editable = ['status',]
def get_form(self, request, obj=None, **kwargs):
form = super(ItemAdd, self).get_form(request, obj, **kwargs)
form.base_fields['user'].initial = request.user
return form
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user=request.user)
如果我理解正確,您需要保存,而不是顯示用戶? 在這種情況下,解決方案是:
class ItemAdd(admin.ModelAdmin):
list_display = ['name', 'price','minimum_order','status']
list_display_links = ['name', 'price','minimum_order',]
search_fields = ['name', 'description']
ordering = ('-price',)
list_filter = ['price', 'status', 'category']
list_per_page = 25
list_editable = ['status',]
# instead get_form method
def save_model(self, request, obj, form, change):
if not change:
obj.user = request.user
super().save_model(request, obj, form, change)
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user=request.user)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.