Как создать объекты модели, которые принадлежат уникальному пользователю - PullRequest
0 голосов
/ 27 декабря 2018

Я настраиваю приложение доставки. Я хочу иметь возможность создавать Reciever, принадлежащий пользователю, вошедшему в систему при создании.

class CustomUser(AbstractUser):
first_name = models.CharField(max_length=30, blank=False)
last_name = models.CharField(max_length=30, blank=False)
email = models.EmailField(blank=False)

class Reciever (models.Model):
name = models.CharField(max_length=256,blank=False)

Я хочу создать объект Reciever, который принадлежитконкретный пользователь.Когда я создаю Reciever сейчас, он доступен для всех пользователей.

1 Ответ

0 голосов
/ 27 декабря 2018

В этом случае вы можете использовать OneToOneField [Django-doc] , то есть ForeignKey [Django-doc] , но с прикрепленным к нему ограничением уникальность , например:

class Reciever(models.Model):
    name = models.CharField(max_length=256,blank=False)
    <b>user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)</b>

Таким образом, вы можете присоединить зарегистрированного пользователя к Receiver, например::

def some_view(request):
    Receiver.objects.create(name='foo', user=request.user)

учитывая, конечно, что вы уже сделали CustomUser модель своего клиента [Django-doc] .

Если вы сделали ModelForm, вы можетеисключите поле user и установите его в представлении, например:

def some_view(request):
    form = ReceiverForm(request.POST)
    if form.is_valid():
        object = form.save(commit=False)
        object.user = request.user
        object.save()
        # ...
    # ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...