Использование дополнительных представлений Django - Дополнительные представления Django
У меня есть форма, и у модели Навыков есть много-много связей с Профилем.
Я получаю ошибку
Unknown field(s) (title) specified for Skill_profile
Я заставил его работать так, как использовал exclude
.
class ProfileSkillInline(InlineFormSetFactory):
model = Skill.profile.through
exclude = ['id']
И затем он начал работать - Как бы я правильно использовал наборы форм со многими ко многим без использования этого exclude = ['id']
- я знаю, что в Django 2.2
мне нужно использовать fields
или exclude
- но если я использую fields = ['title']
- это дает мне ошибку, поэтому я использовал exclude
и выбрал случайное поле, которое мне не нужно - но это неправильный способ - вот почему я хотел бы знать.
Я использовал руководство Django, чтобы сделать правильные шаги - Django MTM Relationship
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
full_name = models.CharField(max_length=50, blank=True)
description = models.TextField(blank=True)
avatar = models.ImageField(blank=True)
def __str__(self):
return self.user.username
def get_absolute_url(self):
return reverse('profile')
class Skill(models.Model):
profile = models.ManyToManyField(Profile, related_name='skills', blank=True)
title = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.title
views.py
class ProfileSkillInline(InlineFormSetFactory):
model = Skill.profile.through
fields = ['title']
class SkillInline(InlineFormSetFactory):
model = Skill
inlines = [ProfileSkillInline]
# fields = ['title']
# initial = [{'title': 'Enter Skill'}]
factory_kwargs = {'extra': 1, 'max_num': None,
'can_order': False, 'can_delete': True}
prefix = 'skill_formset'
class ProfileUpdateView(UpdateWithInlinesView):
model = Profile
inlines = [ProfileSkillInline, ProjectInline]
fields = ['full_name', 'description', 'avatar']
template_name = 'profile_edit.html'
def get_queryset(self):
return Profile.objects.get(user=self.request.user)
def get_object(self, queryset=None):
return self.get_queryset()