我正在创建一个从头开始的用户之间的私人评论系统,我需要指导,当用户提交表单时,视图应该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>
当用户通过此表单提交时,将其发送到视图上的相关功能。
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)
...
views.py ,这是我缺乏知识的地方(请参阅那里的代码以获得解释):
get_or_create
我知道已有request.user
功能,但我不明白如何限制只能连接到已连接的product.creator
}和STORM_HOME
用户。我怎样才能做到这一点?
答案 0 :(得分:0)
我相信你需要的是在产品ID和评论用户ID上有一个复合唯一索引 - 所以在Room
模型中你需要在Meta选项中设置unique_together('user', 'product')
- 如果假设您的关系字段已分别命名为user
和product
。