Python 当用户提交表单时,如何获取或创建唯一的模型对象?
我正在从头开始在用户之间创建一个私人评论系统,我需要指导,当用户提交表单时,视图应该Python 当用户提交表单时,如何获取或创建唯一的模型对象?,python,django,django-views,Python,Django,Django Views,我正在从头开始在用户之间创建一个私人评论系统,我需要指导,当用户提交表单时,视图应该get\u或\u创建一个独特的Room,其中只有连接的用户和接收者可以相互评论 我不明白如何汇编代码来创建此功能,下面是我正在使用的模型: class Product(models.Model) name = models.CharField() creator = models.ForeignKey(User) ... class Room(models.Model): use
get\u或\u创建一个独特的Room
,其中只有连接的用户和接收者可以相互评论
我不明白如何汇编代码来创建此功能,下面是我正在使用的模型:
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()
...
当用户通过此表单提交时,将其发布到视图上的相关功能
<form method="post" action="{% url 'new_room_detail' %}">
<input type="hidden" value="{{ product.id }}">
<input type="submit" value="Contact this user">
</form>
我知道已经有了get\u或\u create
功能,但我不明白如何将访问权限仅限于连接的(request.user
)和product.creator
用户。我怎样才能做到这一点 我认为您需要的是在产品id和评论用户id上有一个复合的唯一索引-因此在房间
模型中,您需要将唯一性一起设置(“用户”、“产品”)
在元选项中-如果假设您的关系字段分别命名为用户
和产品
。我认为您需要的是在产品id和注释用户id上有一个复合唯一索引-因此在房间
模型中,您需要一起设置唯一('user'、'product'))
在元选项中-如果假设您的关系字段分别命名为user
和product
。您为什么不限制任何其他选择发表评论的人。如果试图评论的人不是帖子创建者或连接的用户,请不要做任何事情,否则让他们评论/交流。这只是一个值得考虑的建议@BigMonkey89WithaLeg也行,但问题还是一样,我仍然会被困在如何创建一个只有这两个用户才能访问的房间里。@Kasimovnuridin为类似“聊天室”的房间创建权限。如果您知道创建文件室时的两个用户,请将此权限分配给他们。当用户对文件室执行任何操作时,请检查权限。就这样!你为什么不限制其他选择发表评论的人呢。如果试图评论的人不是帖子创建者或连接的用户,请不要做任何事情,否则让他们评论/交流。这只是一个值得考虑的建议@BigMonkey89WithaLeg也行,但问题还是一样,我仍然会被困在如何创建一个只有这两个用户才能访问的房间里。@Kasimovnuridin为类似“聊天室”的房间创建权限。如果您知道创建文件室时的两个用户,请将此权限分配给他们。当用户对文件室执行任何操作时,请检查权限。就这样!
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)
...