【问题标题】:How can I change/update field value in my User model by button?如何通过按钮更改/更新用户模型中的字段值?
【发布时间】:2021-06-19 14:58:36
【问题描述】:

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

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

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, blank=True, 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 %}

【问题讨论】:

    标签: python python-3.x django django-models cookiecutter-django


    【解决方案1】:

    我没有看到租借按钮?您想创建一个包含录像带所有详细信息的表单。保存表单实例后,可以将新建的videotape对象添加到用户的m2m字段中。

    在此处阅读表格:https://docs.djangoproject.com/en/4.0/topics/forms/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-29
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2022-12-23
      • 2016-09-26
      • 1970-01-01
      相关资源
      最近更新 更多