Я использую пользовательскую модель пользователя с профилем пользователя, используя OneToOneField
с этой структурой:Джанго передачи данных профиля пользователя от клиента к серверу
email
password
profile : {
username
avatar
}
Она работает довольно хорошо для мобильного телефона, потому что я только в основном отправить JSON назад и в-четвертых, но это проблема, когда я использую свой API с веб-сайтом, потому что в html нет способа отправить json-подобные данные, поэтому я не могу заполнить поле «profile», не используя ajax.
Я бы предпочел иметь возможность использовать простые html-формы и использовать javascript только для проверки и анимации клиента, не использующих его для критических функций, таких как регистрация.
Я также могу использовать следующую структуру, а затем восстановить словарь для серверной части профиля, но я чувствую, что это недостаточно общий.
email
password
username
avatar
UserSerializer.py
class UserSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)
profile = ProfileSerializer(required=True)
class Meta:
model = get_user_model()
fields = ('id', 'email', 'password', 'date_joined', 'profile')
def create(self, validated_data):
#profile_data = validated_data.pop('profile')
password = validated_data.pop('password')
user = get_user_model().objects.create_user(**validated_data)
user.set_password(password)
#user.save()
print(user)
#print(profile_data
ProfileSerializer.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('username',)
Поэтому независимо от того, если я использую JSON или данные формы, очевидно, ждет профиля (объекта) данных. Я хотел бы иметь возможность сделать это с помощью html-формы.
Любая идея, как я должен подходить к этому?
Я уже использую рамки Джанго отдыха. Я собираюсь обновить свой вопрос с помощью своих сериализаторов, возможно, это станет более ясным. – soueuls