Вопрос:
Я новичок в django, и я использую версию 1.11
У меня несколько моделей, связанных с внешними ключами, а некоторые – с отношением oneToOne.
например, модели пользователя и профиля, я хотел бы добавить поля формы профиля из формы пользователя
как?
Для oneToOne у меня есть модель администратора с полем oneToOne, связанным с пользовательской моделью. но не только администратор, у меня есть несколько типов пользователей (admin, writer, commetator,…) каждый в другой модели, и при создании одного типа я также создаю связанного с ним пользователя, поэтому, когда я получаю доступ к форме записи в admin, я создаю администратор, но я также хочу иметь поле модели пользователя, чтобы создать как из формы записи
в AdminAdmin, то есть: модель администратора, я бы хотел добавить поля пользователя в форме, отображаемой в шаблоне администратора
from django.contrib import admin from .models import User, Admin class UserInline(admin.StackedInline): model = User fields = [‘username’, ‘first_name’, ‘last_name’] class AdminAdmin(admin.ModelAdmin): model = Admin list_display = [‘getUsername’] inlines = [UserInline] def getUsername(self, obj): return obj.user.username getUsername.short_description = «Nom d’utilisateur» admin.site.register(Admin, AdminAdmin)
этот код генерирует ошибку “: (admin.E202) ‘common.User’ не имеет ForeignKey для ‘common.Admin’.”
Ответ №1
С помощью этой настройки:
Class A(models.Model): # … nameField = models.CharField(max_length=100, …) # … pass Class B(models.Model) # … fk = models.ForeignKey(A) # … Class C(models.Model): # … oto = models.OneToOneKeyField(A)
Вы не можете получить доступ к полю реальной модели с помощью ForeignKey + __ + FieldName. Например, вы можете получить доступ к полю имени модели из связанных моделей с помощью:
В
‘fk__name’
С
‘oto__name’