Python Django许多关系细节

Python Django许多关系细节,python,html,django,Python,Html,Django,我想建立一个网站,在这个网站上,用户可以使用Django互相发送文字。当用户删除一个单词时,该单词将仅为该用户删除。我有一个工作网站;唯一的问题是当一个单词被删除时,它会被所有用户删除。我如何解决这个问题,它是一个涉及到很多关系的问题吗 Django单词模型: from django.db import models from datetime import datetime from django.contrib.auth.models import User class Word(mod

我想建立一个网站,在这个网站上,用户可以使用Django互相发送文字。当用户删除一个单词时,该单词将仅为该用户删除。我有一个工作网站;唯一的问题是当一个单词被删除时,它会被所有用户删除。我如何解决这个问题,它是一个涉及到很多关系的问题吗

Django单词模型:

from django.db import models
from datetime import datetime
from django.contrib.auth.models import User


class Word(models.Model):
   definition = models.CharField(max_length=350)
   turkish = models.CharField(max_length=50)
   english = models.CharField(max_length=50)
   users = models.ManyToManyField(User)
   creator = models.CharField(max_length=50)

   def __str__(self):
      return self.english

   def summary(self):
      return self.definition[:50] + "..."
共享视图功能:

@login_required
def send(request):
    users_list = User.objects.all().exclude(username=request.user.username)
    user = request.user
    small = user.username.title()
    send_to_str = request.POST['user']
    sent_word_str = request.POST['word']
    send_to = User.objects.get(username=send_to_str)
    sent_word = Word.objects.get(id=sent_word_str)
    if not users_list:
         sendmessage = 'You have no friends'
    else:
         sendmessage = ''
    sent_word.users.add(send_to)
    words = Word.objects.filter(users=user).order_by('-english')

    return render(request, 'intro.html', {'sendmessage': sendmessage, 'words': words, 'small' : small})
@login_required
def delete(request):
    if request.method == 'POST':
        current_id = request.POST['word_id']
        current_word = Word.objects.get(id=current_id)
        current_word.delete()
        messages.add_message(request, messages.INFO, 'Succesfully deleted.')
        return redirect('translater:home')

    else:
        return render(request, 'intro.html', {'message': 'there is a problem'})
删除视图功能:

@login_required
def send(request):
    users_list = User.objects.all().exclude(username=request.user.username)
    user = request.user
    small = user.username.title()
    send_to_str = request.POST['user']
    sent_word_str = request.POST['word']
    send_to = User.objects.get(username=send_to_str)
    sent_word = Word.objects.get(id=sent_word_str)
    if not users_list:
         sendmessage = 'You have no friends'
    else:
         sendmessage = ''
    sent_word.users.add(send_to)
    words = Word.objects.filter(users=user).order_by('-english')

    return render(request, 'intro.html', {'sendmessage': sendmessage, 'words': words, 'small' : small})
@login_required
def delete(request):
    if request.method == 'POST':
        current_id = request.POST['word_id']
        current_word = Word.objects.get(id=current_id)
        current_word.delete()
        messages.add_message(request, messages.INFO, 'Succesfully deleted.')
        return redirect('translater:home')

    else:
        return render(request, 'intro.html', {'message': 'there is a problem'})
已重定向到此html:

  {% if words %}
  <h3 style="color:gray;font-weight:bold">My Word List</h3>
  <br>
  {% endif %}

  {% for word in words %}

  <h4 style="color:red">{{ word.english }}&nbsp;/&nbsp;{{ word.turkish }} </h4>
  <h4 style="color:green">{{ word.summary }}&nbsp;/&nbsp;{{ word.creator }}</h4>

  <br>


  <button type="button" onClick="document.getElementById('deleterForm').submit()" class="btn btn-warning">Delete!</button>
  <button type="button" onClick="document.getElementById('sharerForm').submit()" class="btn btn-primary">Share!!</button>

  <form id="deleterForm" action="{% url 'translater:delete' %}" method="POST">
      {% csrf_token %}
      <input type="hidden" name="word_id" value="{{ word.id }}">
  </form>

  <br>

  <form id="sharerForm" action="{% url 'translater:share' %}" method="POST">
      {% csrf_token %}
      <input type="hidden" name="word_id" value="{{ word.id }}">
  </form>

  <form id="senderForm{{ word.id }}" action="{% url 'translater:send' %}" method="POST">
      {% csrf_token %}

      {% for user in users_list %}
        <input type="submit" name="user" value="{{ user }}">
        <input type="hidden" name="word" value="{{ word.id }}">
      {% endfor %}
      {{ sendmessage }}
  </form>

  <br>
  {% endfor %}
{%if words%}
我的词表

{%endif%} {单词中的单词百分比为%} {{word.english}/{{word.turkish}} {{word.summary}}/{{word.creator}
删除! 分享!! {%csrf_令牌%}
{%csrf_令牌%} {%csrf_令牌%} {用户列表%中的用户的百分比} {%endfor%} {{sendmessage}}
{%endfor%}
您正试图实际删除该单词,但您的“删除”应该只是更新用户列。它实际上并不是删除,它只是一个只影响“用户”字段的更新。。就像任何其他的“更新”一样,我如何选择给用户的单词?current\u english=request.POST['word\u english']current\u word=user.words.get(english=current\u english)您不会从用户那里选择单词。忘记用户。把它看作是多对多关系中的一个简单变化。您只需要从m2m表中删除“request.user”。关于如何简单地更新m2m表格,请参见以下答案:谢谢您的回答:Dyou正在尝试实际删除该单词,但是您的“删除”应该只更新用户列。它实际上并不是删除,它只是一个只影响“用户”字段的更新。。就像任何其他的“更新”一样,我如何选择给用户的单词?current\u english=request.POST['word\u english']current\u word=user.words.get(english=current\u english)您不会从用户那里选择单词。忘记用户。把它看作是多对多关系中的一个简单变化。您只需要从m2m表中删除“request.user”。关于如何简单地更新m2m表,请参见以下答案:谢谢您的回答:D