社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  schillingt  »  全部回复
回复总数  4
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如何在内部处理这些类。