为用户 Django 自动设置不可编辑的外键,可以通过以下步骤实现:
editable=False
属性,以确保该字段在后台管理界面中不可编辑。例如:from django.db import models
class User(models.Model):
name = models.CharField(max_length=100)
group = models.ForeignKey(Group, on_delete=models.CASCADE, editable=False)
ModelForm
类,并在该类中重写 __init__
方法。在 __init__
方法中,将外键字段设置为不可编辑状态。例如:from django import forms
from .models import User
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['group'].widget.attrs['disabled'] = True
from django.shortcuts import render
from .forms import UserForm
def create_user(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
form.save()
return render(request, 'success.html')
else:
form = UserForm()
return render(request, 'create_user.html', {'form': form})
通过以上步骤,用户在创建或编辑用户时,将无法修改外键字段的值。这样可以确保外键关系的完整性和一致性。
推荐的腾讯云相关产品:腾讯云数据库 TencentDB,提供高性能、可扩展的数据库服务,支持多种数据库引擎,适用于各种应用场景。
产品介绍链接地址:腾讯云数据库 TencentDB
领取专属 10元无门槛券
手把手带您无忧上云