2
새 연락처를 만들 때 사용자가 채워야 할 일련의 필드가 들어있는 CreateView
보기가 있습니다. 이제는 사용자가 만든 범주에서만보고 선택할 수 있기를 바랍니다. 내가 볼 수있는 사용자가 필요한 것은Django CreateView - 외래 키 필드의 특정 개체 만 표시
class ContactCreate(LoginRequiredMixin, generic.edit.CreateView):
model = models.Contact
success_url = reverse_lazy('site:contacts')
fields = ['firstname', 'lastname', 'phone1', 'phone2', 'email', 'city', 'category']
template_name = 'site/contacts.html'
context_object_name = 'all_contacts'
연관된 해당 프로파일 외래 키 만 포함 카테고리를 가지고있는 선택입니다 :
class Category(models.Model):
class Meta:
verbose_name = _('category')
verbose_name_plural = _('categories')
name = models.CharField(max_length=100, unique=True)
profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
def __unicode__(self):
return self.name
이것은이다 : 이 카테고리의 모델입니다 그들과 함께.
나는 이것에 대해 도움을 얻을 수있어서 기쁩니다. 고맙습니다! 그렇지 않으면,
class ContactCreate(LoginRequiredMixin, generic.edit.CreateView):
# ...
def get_form(self, *args, **kwargs):
form = super(ContactCreate, self).get_form(*args, **kwargs)
form.fields['categories'].queryset = Category.objects.filter(profile=self.request.user.profile)
return form
이, 물론, Profile
모델 related_name
'profile'
와 User
에 OneToOneField
이 있다고 가정합니다 :