Как отфильтровать контакты по пользователю, которому они принадлежат?
Мне нужно показать имена, принадлежащие только одному пользователю.
models.py
class Contact(models.Model):
name = models.CharField(max_length=50, null=False, blank=False, unique=False)
surname = models.CharField(max_length=50, null=True, blank=True, unique=False)
father_name = models.CharField(max_length=50, null=True, blank=True, unique=False)
dob = models.DateField(null=True, blank=True, unique=False)
photo = models.ImageField(upload_to='static/photos/', null=True, blank=True)
email = email = models.EmailField(max_length=254, null=True, blank=True, unique=False)
phone_number = models.CharField(max_length=12, null=False, blank=False, unique=False)
contact_belongs_to = models.ForeignKey(User, on_delete=models.CASCADE)
views.py
def post(self, request:HttpRequest)->HttpResponse:
form = ContactForm(request.POST)
if form.is_valid():
Contact.objects.create(name=form.cleaned_data['name'], surname=form.cleaned_data['surname'], father_name=form.cleaned_data['father_name'], dob=form.cleaned_data['dob'], photo=form.cleaned_data['photo'],
email=form.cleaned_data['email'], phone_number=form.cleaned_data['phone_number'], contact_belongs_to=request.user).save()
return HttpResponse('OK')
else:
return render(request, 'contacts/contact_form.html', context={'form':form})
вот как 'contact_belongs_to' принимает значение->user
А когда пользователь хочет видеть только свои собственные контакты, я должен фильтровать их по 'contact_belongs_to' или нет?
Помогите, пожалуйста...
Вы можете сделать это двумя способами:
- Использование связанного имени в объекте User:
request.user.contacts
- Фильтр
Contact
с использованиемcontact_belongs_to
:Contact.objects.filter(contact_belongs_to=request.user)