Я создаю частную систему комментариев между пользователями с нуля, и мне нужно руководство, когда пользователь отправляет форму, вид должен быть get_or_create
уникальным Room
, где только подключенный пользователь и получатель могут прокомментировать друг друга.Как я могу get_or_create уникальный объект модели при отправке пользователем формы?
Я не понимаю, как я могу собрать свой код, чтобы создать эту функцию, вот модели Я использую:
class Product(models.Model)
name = models.CharField()
creator = models.ForeignKey(User)
...
class Room(models.Model):
user = models.ForeignKey(Product)
#unique url for each new room
uuid_url = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.TextField()
...
Когда пользователь отправить через эту форму POST это заинтересованная функцию на представлениях.
<form method="post" action="{% url 'new_room_detail' %}">
<input type="hidden" value="{{ product.id }}">
<input type="submit" value="Contact this user">
</form>
views.py, Вот где я не хватает знаний (см код внизу для объяснения):
def new_room(request):
try:
#get the submited product object
product = Product.objects.get(id=request.POST.get('product_id'))
except Gig.DoesNotExist:
return redirect('/')
#if it's the first time that the connected user submit product.id to product.creator
#then create OR get if it already exist, a Room with a unique url
#in which only request.user and product.creator can comment.
return redirect(reverse('commenting_room'))
def commenting_room(request, uuid)
...
Я знаю, что есть уже get_or_create
функция, но я не понять, как я могу ограничить доступ только к подключенным (request.user
) и product.creator
пользователям. Как я могу это достичь?
Почему бы вам просто не ограничить кого-либо еще, кто хочет комментировать. Если человек, пытающийся прокомментировать, не является создателем сообщения или подключенным пользователем, не делайте ничего, иначе пусть они комментируют/обмениваются данными. Это всего лишь предложение подумать! – BigMonkey89WithaLeg
@ BigMonkey89WithaLeg, который тоже будет работать, но вопрос остается тем же, я все равно буду зацикливаться на том, как создать_or_get комнату, в которую могут попасть только эти два пользователя. – Lindow
@ KasimovNuriddin создать разрешение для комнаты, как «чат в комнате». Если вы знаете обоих пользователей о создании комнаты, назначьте это разрешение для обоих из них. Проверьте разрешение, когда пользователь совершает какие-либо действия с комнатой. Это! –