私信  •  关注

schillingt

schillingt 最近创建的主题
schillingt 最近回复了
7 年前
回复了 schillingt 创建的主题 » 如何在method>Django中检查重定向

我认为你的主要问题是 reverse 获取要传递到的url redirect . 但是,您还有一些其他问题需要纠正。

一种是,您应该在传递到POST上呈现的上下文中包含无效表单。这样错误就可以显示给用户。

第二,你的设计不支持同时下多个订单。如果X订单发生在时间A,那么这些用户都有 order_success 同时查找最新的顺序,它们都将看到绝对的最后顺序。相反,您应该在url中包含订单id,并在成功时重定向到该特定url。

from django.shortcuts import get_object_or_404
from django.urls import reverse

def order_create(request):
    cart = Cart(request)
    # Default to a basic form for the GET path. POST will override it.
    form = OrderCreateForm()
    if request.method == 'POST':
        form = OrderCreateForm(request.POST)

        if form.is_valid():
            order = form.save()
            for item in cart:
                OrderItem.objects.create(
                    order=order, product=item['product'],
                    price=item['price'], quantity=item['quantity']
                )
            cart.clear_session()
            # Only redirect on absolute success
            return redirect(
                reverse('order:order_success', kwargs={'order_id': order.id})
            )
    # Return the invalid form on POST
    return render(request, 'orders/order_create.html', {'cart':cart, 'form':form})

def order_success(request, order_id):
    order = get_object_or_404(Order, id=order_id)
    return render(request, 'orders/order_success.html', {'order':order})

您还需要更改url.py条目 订单成功 包括kwarg订单。

7 年前
回复了 schillingt 创建的主题 » 如何?django模型字段,其值是同一模型的多个字段的选择

我能想到的一种方法是使用一个贯穿模型的manytomyne。

class Dm_Company(models.Model):
    company_name = models.CharField(max_length=80, blank=True, verbose_name="Razon Social")
    company_members = models.ManyToManyField(conf_settings.AUTH_USER_MODEL, through='CompanyMembership')
    ...

class CompanyMembership(models.Model):
    company = models.ForeignKey(Dm_Company)
    user = models.ForeignKey(conf_settings.AUTH_USER_MODEL)
    is_contact = models.BooleanField(default=False)

此模型的困难在于,您需要编写逻辑以防止将多个companymember设置为 is_contact 是的。但是,它确实会构造您的数据模型,使公司联系人无法引用其他公司中的用户。

你考虑过用 DateRangeFilter ?对你来说也许是个更好的选择。但你的提议 ExpenseFilter 将查找所有年份中一个月的费用实例。

7 年前
回复了 schillingt 创建的主题 » Django测试数据库需要启用Postgres扩展

创建空迁移并使用 CreateExtension 操作:

from django.contrib.postgres.operations import CreateExtension

class Migration(migrations.Migration):
    ...

    operations = [
        CreateExtension(name='fuzzystrmatch'),
        ...
    ] 

Relevant docs

编辑: 如果这不起作用,那么我的下一个建议是回顾一下Django如何在内部处理这些类。