Добавить пользователя в модель, нажав на ссылку - PullRequest
0 голосов
/ 22 марта 2019

Я создал уникальный токен, который является ссылкой на свойство, когда пользователь переходит на ссылку, есть кнопка для подтверждения желания присоединиться к этому свойству.

Теперь я немного запутался в том, как закончить мой код.

Models.py:

class Property(models.Model):
    name = models.CharField(max_length=250, verbose_name="Nom de l'établissement")
    contributors = models.ManyToManyField(User, verbose_name="Liste des collaborateurs autorisés") 
    token = models.CharField(max_length=500, verbose_name="Token") 
    payday = models.CharField(max_length=500, verbose_name="Jour de paye", null=True, blank=True)
    planning = models.ImageField('Planning', null=True, blank=True )

Мои views.py

def join_property(request, property_id):
property = Property.objects.get(pk=property_id)
contributors # now this is where I cannot figured out ...
contributors.save()

Итак, я понимаю логику, но не до конца понимаю среднюю часть моего кода.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 22 марта 2019

Метод add() для отношений «многие ко многим» - это тот, который вам нужен. Позволяет добавить связь (и автоматически сохраняет связь).

def join_property(request, property_id):
    property = Property.objects.get(pk=property_id)
    property.contributors.add(request.user)
    ...  # don't forget to return something! (e.g. redirect or confirmation page)

Читать все об этом здесь

Не забывайте: contributors - это не список участников, а менеджер отношений (точнее, ManyRelatedManager), аналогично objects. Таким образом, чтобы получить всех участников, вам нужно property.contributors.all(). Вот почему у вас есть методы add() и set().

...