如何通过按钮更改/更新用户模型中的字段值?

问题描述

我使用的是 django-cookiecutter 用户模型(添加了 VideoTape ManyToMany 连接)。

我已经创建了自己的模型 VideoTape。 我想通过单击 VideoTape 详细信息页面上的 "RENT" 按钮来创建为用户添加 VideoTape 的选项(通过更新 User 中的 videotapes 字段):

models.py:

class User(AbstractUser):
    name = CharField(_("Name of User"),blank=True,max_length=255)
    first_name = None  # type: ignore
    last_name = None  # type: ignore
    videotapes = models.ManyToManyField(VideoTape,null=True)

    def get_absolute_url(self):
        return reverse("users:detail",kwargs={"username": self.username})
class VideoTape(models.Model):
    title = models.CharField(max_length=256,verbose_name=_("VideoTape Title"))
    slug = models.SlugField(max_length=256,unique=True,editable=False)
    description = models.TextField(verbose_name=_("VideoTape Description"))
    genres = models.TextField(verbose_name=_("VideoTape Genres"),null=True)
    thumbnail = models.URLField(null=True)

    def save(self,*args,**kwargs):
        if not self.slug:
            base = self.title.strip()
            for candidate in generate_slug(base):
                if not VideoTape.objects.filter(slug=candidate).exists():
                    self.slug = candidate
                    break
            else:
                raise Exception("Can't create new VideoTape object")

        super().save(*args,**kwargs)

    def get_absolute_url(self):
        return reverse("videotapes:detail",kwargs={"slug": self.slug})

    def __str__(self):
        return self.title

videotape_detail.html

{% extends "base.html" %}

{% block content %}
{% if request.user.is_superuser %}
<div>
  <a href="{%  url 'videotapes:update' slug=videotape.slug %}"
     class="btn btn-outline-primary">
    <i class="fa fa-edit"></i>Edit
  </a>
  <a href="{%  url 'videotapes:delete' slug=videotape.slug %}" class="btn btn-outline-danger">
    <i class="fa fa-times"></i>Delete
  </a>
</div>
{% endif %}
<div class="card">
  <div class="card-horizontal">
    <div class="img-square-wrapper">
      {% if videotape.thumbnail %}
      <img class=""
           src="{{ videotape.thumbnail }}"
           alt="Card image cap"
           style="height: 700px; width: 100%; display: block;">
      {% else %}
      <img class=""
           src="-"
           alt="Stock card image cap"
           style="height: 700px; width: 100%; display: block;">
      {% endif %}
    </div>
    <div class="card-body">
      <h4 class="card-title"> {{ videotape.title }} </h4>
      <p class="card-text"><b>Description:</b> {{ videotape.description }} </p>
      <p class="card-text"><b>Genres:</b> {{ videotape.genres }} </p>
    </div>
  </div>
</div>
{% endblock %}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)