AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[django](coding)

Martin Hope
bibashmanjusubedi
Asked: 2025-04-22 15:41:06 +0800 CST

通过 API 发送 POST 请求时在 Postman 中注销时出现问题

  • 6

我正在使用 POSTMAN 发送 API 请求。我已经通过 API 登录并获取了令牌。当我尝试使用该令牌注销时,它显示输出“未登录”。这是我在 Postman 中获取的令牌的屏幕截图: 令牌 这是我发送 POST 请求注销时获得的输出: 注销

我尝试使用在 Django 应用程序中登录时使用的相同令牌注销。这是我在 Django 中的代码:

def logout_user(request):
    if request.user.is_authenticated:
        request.user.auth_token.delete()
        return Response({'message': 'Successfully logged out'})
    else:
        return Response({'error': 'Not logged in'}, status=status.HTTP_401_UNAUTHORIZED
django
  • 1 个回答
  • 31 Views
Martin Hope
Dhiraj Panjwani
Asked: 2025-04-20 19:22:07 +0800 CST

Django分页器页面转列表

  • 7

我正在尝试用 Django 搭建一个婚恋网站。以下是一次显示单个个人资料的代码。

unfiltered_list = profile_matches
for profile in unfiltered_list:
   print("\n profile:",profile,"\n")
    
profiles_list = profile_matches
paginator = Paginator(profiles_list,1)
page_number = request.GET.get('page', 1)
profiles = paginator.page(page_number)
profile_id = profiles.object_list.values('user_model_for_profile_id')
    

如果我删除 for 循环,代码运行正常,但当我尝试循环遍历未筛选的列表时,“profiles”会变成一个列表,即使我除了创建一个引用它的变量之外没有修改过它。我收到一个属性错误,提示“AttributeError: ‘list’ object has no attribute ‘values’”。

这是Django本身的问题吗?还是我忽略了什么?

django
  • 1 个回答
  • 36 Views
Martin Hope
kontur
Asked: 2025-04-14 22:41:01 +0800 CST

将 django 表单集输出为表格行

  • 5

我有一个 Django 表单集,我想将其输出为每个嵌套表单的一个表行,如下所示:

<form>
    {{ feature_formset.management_form }}
    <table>
    {% for form in feature_formset %}
        <tr>
            {% for field in form %}
            <td>{{ field.name }} {{ field }}</td>
            {% endfor %}
        </tr>
    </table>
    {% endfor %}
</form>

然而,不知何故(我认为)自动字段渲染被table包装器混淆了。

我期望的输出如下:

<form>
    ...
    <table>
        <tr>
            <td>id: <input ...></td>
            <td>name: <input ...></td>
            <td>foobar: <input ...></td>
        </tr>
        <tr>
            <td>id: <input ...></td>
            <td>name: <input ...></td>
            <td>foobar: <input ...></td>
        </tr>
        <tr>
            <td>id: <input ...></td>
            <td>name: <input ...></td>
            <td>foobar: <input ...></td>
        </tr>
    </table>
    {% endfor %}
</form>

但是,我得到的只是表单集第一个表单的一行,其余表单只是转储字段。不知何故,{% for field in form %}迭代不正确,我猜其余字段也被转储了:

<form>
    ...
    <table>
        <tr>
            <td>id: <input ...></td>
            <td>name: <input ...></td>
            <td>foobar: <input ...></td>
        </tr>
        
        id: <input ...>
        name: <input ...>
        foobar: <input ...>
        
        id: <input ...>
        name: <input ...>
        foobar: <input ...>
    </table>
    {% endfor %}
</form>

有什么迹象表明为什么嵌套表单/字段的自定义渲染无法按预期工作?

django
  • 1 个回答
  • 20 Views
Martin Hope
ZaneColeRiley
Asked: 2025-04-07 02:46:20 +0800 CST

错误“RecordSearchForm”对象没有属性“is_game”

  • 6
def index(request):
    game_data = GameDataEntry()
    update_progress = ProjectProgressEntry()
    work_hours = WorkHoursEntry()
    if request.method == "GET":
        form = RecordSearchForm(data=request.GET)
        if form.is_game is True:
            query = request.GET.get('entry_date')
            object_list = game_data.objects.filter(entry_date=query)
            return HttpResponse(object_list, content_type='text/plain')
        if form.is_work is True:
            query = request.GET.get('entry_date')
            object_list = work_hours.objects.filter(entry_date=query)
            return HttpResponse(object_list, content_type='text/plain')
        if form.is_Progress is True:
            query = request.GET.get('entry_date')
            object_list = update_progress.objects.filter(entry_date=query)
            return HttpResponse(object_list, content_type='text/plain')
    else:
        form = RecordSearchForm()

    return render(request, 'index.html', context={'form': form})

这是我的表单类

class RecordSearchForm(forms.Form):
    is_Progress = forms.BooleanField(widget=forms.CheckboxInput(
        attrs={'class': 'form-check-input', "id": "is_progress_update", "type": 'checkbox'}))
    is_game = forms.BooleanField(widget=forms.CheckboxInput(
        attrs={'class': 'form-check-input', "id": "is_game_update", "type": "checkbox"}))
    is_work = forms.BooleanField(widget=forms.CheckboxInput(
        attrs={'class': 'form-check-input', "id": "is_work_entry", "type": "checkbox"}))
    game_name = forms.ModelChoiceField(widget=forms.Select(
        attrs={'class': 'form-control', "id": "game_name"}), queryset=Games.objects.all())
    entry_date = forms.DateField(widget=forms.DateInput(
        attrs={'class': 'form-control', "id": "date_entry", "type": "date"}))

我正在尝试制作一个搜索功能,以根据游戏开发、完成更新或工作时间模型的输入日期获取记录,但它说 is_game 不是我的表单的属性,但它显然在那里。有人能告诉我我做错了什么或者我错过了什么吗

django
  • 1 个回答
  • 15 Views
Martin Hope
bur
Asked: 2025-04-02 21:30:09 +0800 CST

通过 ManyToMany:ForeignKey 未在管理员中显示

  • 6

我有一个ManyToManyField使用through:

class Entity(models.Model):
    relationships = models.ManyToManyField('self', through='ThroughRelationship', blank=True)
        
class ThroughRelationship(models.Model):
    entity = models.ForeignKey(Entity, on_delete=models.CASCADE)
    name = models.CharField()

我正在将其添加到管理员像这样:

class ThroughRelationshipInline(admin.TabularInline):
    model = ThroughRelationship
    extra = 3

@admin.register(Entity)
class EntityAdmin(admin.ModelAdmin):
    inlines = [ThroughRelationshipInline]

但是,在管理面板中,只name显示字段,我无法选择entity。我该如何解决这个问题?

django
  • 1 个回答
  • 23 Views
Martin Hope
bur
Asked: 2025-03-30 01:03:40 +0800 CST

在过滤和区分后使用 StringAgg

  • 6

我正在使用StringAgg如下order:

    # Get order column & annotate with list of credits
    if request.POST.get('order[0][name]'):
        order = request.POST['order[0][name]']
        if order == 'credits_primary':
            releases = releases.annotate(credits_primary=StringAgg(
                'credits__entity__name',
                delimiter=', ',
                filter=Q(credits__type='primary'),
                ordering='credits__id'
            ))
        elif order == 'credits_secondary':
            releases = releases.annotate(credits_secondary=StringAgg(
                'credits__entity__name',
                delimiter=', ',
                filter=Q(credits__type='secondary'),
                ordering='credits__id'
            ))
    else:
        order = 'title'
    
    # Order releases
    if request.POST.get('order[0][dir]') == 'desc':
        releases = releases.order_by(F(order).desc(nulls_last=True), 'title')
    else:
        releases = releases.order_by(F(order).asc(nulls_last=True), 'title')
    
    for release in releases:
        try: print(release.credits_primary)
        except: pass
        try: print(release.credits_secondary)
        except: pass

这本身完全按照预期工作:顺序是我期望的,并print返回我期望的值。

但是,当我在此之前应用 时filter,如果结果包含相同的 的多个实例release,credits__entity__name则尽管使用了 ,该版本的 s 仍会重复或省略,具体取决于所过滤字段有多少个结果distinct。

以下是filter我正在应用的影响聚合的(之前应用的StringAgg):

    # Other filters...

    # Filter by Search
    if request.POST.get('search[value]'):
        query = Q()
        search = request.POST['search[value]']
        query.add(Q(title__icontains=search), Q.OR)
        query.add(Q(tags__tag__name__icontains=search), Q.OR)
        query.add(Q(credits__entity__name__icontains=search), Q.OR)
        releases = releases.filter(query)
        
    # Make sure items aren't repeated
    releases = releases.distinct()
django
  • 2 个回答
  • 66 Views
Martin Hope
bur
Asked: 2025-03-29 22:14:05 +0800 CST

获取不同 ManyToManyField 对象的列表

  • 6

鉴于这些模型:

class Format(models.Model):
    name = models.CharField(unique=True)
    # More fields...

class Release(models.Model):
    formats = models.ManyToManyField(Format, blank=True)
    # More fields...

当我有一个 Releases 查询集(例如通过releases = Release.objects.filter(foo='bar'))时,如何获取该查询集中的格式列表(作为对象和不同格式)?

以下两种方法都无法实现此目的:

# produces a list of dicts with IDs, not distinct e.g. [ { 'formats': 1 }, { 'formats': 2 }, { 'formats': 1 } ]:
formats = releases.values('formats')

# produces a list of IDs, not distinct, e.g. [ 1, 2, 1 ]:
formats = releases.aggregate(arr=ArrayAgg('platforms'))['arr']

我能想到的唯一方法是通过循环 ID 手动创建一个列表,检查它是否已经存在于列表中,如果不存在就添加它formats.append(Format.objects.get(id=the_id)),但如果可能的话,我真的想避免这样做。

django
  • 1 个回答
  • 22 Views
Martin Hope
Devasya Dave
Asked: 2025-03-24 13:34:27 +0800 CST

TemplateSyntaxError:无法解析剩余部分

  • 5

使用 easy-thumbnails 包。获取以下模板文件的错误。似乎无法弄清楚语法问题是什么。i.image 属于 ImageFileField 类型

**无法解析“thumbnail i.image 320x260”中的其余部分:“i.image 320x260”**

 {% for i in image_page.object_list %}
                <div class="col-6 mb-4 grid-item" style="display: none;">
                    <!-- Image thumbnail for gallery -->
                    <div>
                        <img class="img img-responsive" src=
                                " {% if i.image.thumbnail != null %}
                                    {{ i.image.thumbnail }}
                                  {% else %}
                                    {{ thumbnail i.image 320x260 }}
                                {% endif %} " alt="{{ lot.product.title }}"
                            data-toggle="modal" data-target="#lightboxModal" data-image-url="{{ i.image.url }}" data-pk="{{ i.pk }}"
                            style="cursor: pointer;">
                            {% comment %} object-fit: contain; background-color: #f5f5f5; {% endcomment %}
                    </div>
                </div>
                {% endfor %}

如果对象中已有图像缩略图,则尝试有条件地渲染图像缩略图;如果缩略图不可用,则生成并保存图像缩略图。

django
  • 1 个回答
  • 25 Views
Martin Hope
Doug Conran
Asked: 2025-03-09 06:23:06 +0800 CST

Django-/selected-events/ 处的 ValueError 无法分配...必须是“Profile”实例

  • 5

我有一个 Django 项目,它基本上由 3 个数据集组成:(auth User加上一个Profile数据集),mem_ev并且--< >-- ,Events即经典的多对多关系,使得成员可以参加许多活动,并且许多成员可以访问一个活动。Usermem_evEvent

我想mem_ev用成员选择的‘要参加的活动’来更新数据集,但是它不起作用。

我的models.py文件是:

from django.db import models
from django.utils.text import slugify
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE) # Delete profile when user is deleted
    event_count = models.IntegerField(default=0)

    def __str__(self):
        return f'{self.user.username} Profile' #show how we want it to be displayed

class Event(models.Model):
    title = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50,default="", null=False)
    description = models.TextField()
    cost = models.DecimalField(max_digits = 5, decimal_places = 2, default = 0.0)
    event_date = models.DateTimeField(null=True,blank=True)
    attendees = models.IntegerField(default=0)

    class Meta:
        ordering = ['event_date']

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Event, self).save(*args, **kwargs)

    class Meta:
        ordering = ['event_date']

    def __str__(self):
        return self.title

class mem_ev(models.Model):
    member_id = models.ForeignKey("Profile",on_delete=models.CASCADE)
    event_id = models.ForeignKey("Event",on_delete=models.CASCADE)
    is_attending = models.BooleanField(default=False)
    amt_paid = models.DecimalField(max_digits = 5, decimal_places = 2, default = 0.0)
    date_paid = models.DateTimeField(null=True,blank=True)

我的文件的相关部分views.py是:

from django.contrib.auth.models import User
from .models import Event, mem_ev, Profile
from django.contrib.auth import get_user_model
...

def selected_events(request):
    user = request.user
    member = Profile.objects.get(user_id=user.id)
    print(f'Member id = {member.id}')
    deletes = mem_ev.objects.filter(member_id=member.id)
    deletes.delete()
    for event in request.POST.getlist('events'):
        e = mem_ev(member_id=member.id,event_id=event)    <====  this is the bit Django doesn't like
        e.save()
    messages.success(request, 'Your Event Selections have been updated')

    return render(request, 'wf/about.html')

我收到的错误是:

ValueError at /selected-events/
Cannot assign "14": "mem_ev.member_id" must be a "Profile" instance.
...
/home/dconran/django/mysite/wf/views.py, line 112, in selected_events

            e = mem_ev(member_id=member.id,event_id=event)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

“14”是用户个人资料user_id,与我使用管理站点添加记录时相同。我尝试将第 112 行更改为,views.py但e = mem_ev(profile__member_id=member.id,event_id=event)仍然出现错误。

我做错什么了?

django
  • 1 个回答
  • 21 Views
Martin Hope
Viktor
Asked: 2025-03-06 05:45:37 +0800 CST

Django 在 HTMX 响应中返回旧表单数据

  • 5

我进行了更改UpdateView,以便它也可以处理创建请求,如果pk=0:

class ObjectView(UpdateView):

    def get_object(self, queryset=None):
        if self.kwargs.get(self.pk_url_kwarg) == 0:
            return None
        return super().get_object(queryset)

    def form_valid(self, form):
        if self.request.htmx:
            return self.render_to_response(self.get_context_data(form=form))
        return redirect(self.object.get_absolute_url())

我View正在检查字段是否price已更新,如果是,price_date也更新该字段:

class PartView(ObjectView):
    model = Part
    form_class = PartForm

    def form_valid(self, form):
        if self.object:
            old = Part.objects.get(id=self.object.id)
            self.object = form.save(commit=False)
            if self.object.price != old.price:
                self.object.price_date = date.today()
            self.object.save()
        else:
            self.object = form.save()
        return super().form_valid(form)

我htmx从我的模板调用它:

<div hx-target="this">
  <form method="post"
        hx-post="{{ hx_url }}"
        hx-on:htmx:validation:failed="this.reportValidity()"
        hx-trigger="click from:#btn-save">
    {% csrf_token %}
    {{ form.price }}
    {{ form.price_date }}
  </form>  
  {% include "btn_save.html" %}
</div>

问题是,即使它成功更新了price_date数据库中的内容,它仍然会返回具有旧值的表单,现在如果我再次按“保存”,它将覆盖之前的更改。为什么会发生这种情况?

django
  • 1 个回答
  • 54 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve