Редактирование нескольких моделей с помощью одной формы или представления в Django
Я использую стандартную модель User в Django и поле OneToOneField в модели Profile, где хранится дополнительная информация, такая как биография пользователя.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
Я могу самостоятельно создавать базовые формы для двух моделей
from django.contrib.auth.models import User
class UserForm(ModelForm):
class Meta:
model = User
fields = ['username', 'email']
class ProfileForm(ModelForm):
class Meta:
model = Profile
fields = ['bio']
Какой лучший метод создания страницы, на которой пользователь может редактировать поля любой из моделей?
Пользователь может редактировать имя пользователя, электронную почту или био на одной странице?
Вы можете поместить 2 формы в один шаблон и Django будет управлять заполнением форм нужными полями (единственное исключение - одинаковое имя поля в двух формах)
def view(request):
if request.method == "GET":
context["userform"]=UserForm()
context["profileform"] =ProfileForm()
else:
userform = UserForm(request.POST)
profileform=ProfileForm(request.POST)