微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我使用的是 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 举报,一经查实,本站将立刻删除。