小编Ala*_*air的帖子

根据Django Admin中的父模型预先填充内联

我有两个型号,Event并且Series,其中每个事件属于一个系列.大多数情况下,一个事件start_time与它的系列相同default_time.

这是模型的精简版.

#models.py

class Series(models.Model):
    name = models.CharField(max_length=50)
    default_time = models.TimeField()

class Event(models.Model):
    name = models.CharField(max_length=50)
    date = models.DateField()
    start_time = models.TimeField()
    series = models.ForeignKey(Series)
Run Code Online (Sandbox Code Playgroud)

我在管理应用程序中使用内联,以便我可以一次编辑系列的所有事件.

如果已经创建了一个系列,我想start_time用系列' 预填充每个内联事件default_time.到目前为止,我已经为Event创建了一个模型管理表单,并使用该initial选项以固定时间预填充时间字段.

#admin.py
...
import datetime

class OEventInlineAdminForm(forms.ModelForm):
    start_time = forms.TimeField(initial=datetime.time(18,30,00))
    class Meta:
        model = OEvent

class EventInline(admin.TabularInline):
    form = EventInlineAdminForm
    model = Event

class SeriesAdmin(admin.ModelAdmin):
    inlines = [EventInline,]
Run Code Online (Sandbox Code Playgroud)

我不知道如何从这里开始.是否可以扩展代码,以便该start_time字段的初始值是Series' default_time

django django-forms django-admin

5
推荐指数
1
解决办法
2759
查看次数

django中的自定义用户模型不允许在admin中设置密码

我创建了一个自定义用户模型,我在我的应用程序中成功使用.

问题是在Admin中,在用户编辑屏幕上,我得到了当前密码哈希的显示,而不是用于设置密码的非常有用的界面.

我在Python 2.7上使用Django 1.5b1.

为了管理员用户界面,我如何说服Django管理员以对待本机用户的方式对待我的用户模型?

python django django-admin django-1.5

5
推荐指数
1
解决办法
8333
查看次数

Git - 如何将本地存储库提交到另一个本地存储库的子文件夹?

我有一个我刚刚开始的Django项目,我在bitbucket上主持它.现在我需要在openshift中托管它,并且这样做的方法是它们为您提供了一个git存储库,并且每次推送它们都会自动部署.问题是存储库附带了几个用于配置和设置的顶级文件夹,而有效的django项目必须位于名为wsig/openshift的子文件夹中.

我的问题是,如何将我的本地django存储库中的更改提交到本地openshift存储库的wsig/openshift子文件夹?因为我打算继续在bitbucket /本地存储库上开发

git django openshift

5
推荐指数
1
解决办法
194
查看次数

Django assertTemplateUsed()引发Jinja模板异常

当我尝试运行此测试时:

from django.test import TestCase
from django.core.urlresolvers import reverse
from django.test import Client

class StatisticTest(TestCase):
    def setUp(self):
        self.client = Client()

    def test_schedule_view(self):
        url = reverse('schedule')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'schedule.html')
Run Code Online (Sandbox Code Playgroud)

我得到AssertionError:没有用于呈现响应的模板。

我的看法是:

class Schedule(View):
    def get(self, request):
        games = add_team_info(query.get_current_schedule())
        if games is not []:
             available_schedules = generate_schedule_list(games[0]["season_type"], games[0]["week"])
             is_available = True
        else:
             available_schedules = []
             is_available = False
        return render_to_response("schedule.html", 
                              {"games": games, "available_schedules": available_schedules, "is_available": is_available})
Run Code Online (Sandbox Code Playgroud)

和urls.py:

url(r'^schedule/$', views.Schedule.as_view(), name='schedule'),
Run Code Online (Sandbox Code Playgroud)

python testing django assert jinja2

5
推荐指数
1
解决办法
652
查看次数

如何在CreateView中覆盖表单字段

在模型形式中,我可以覆盖表单字段

class waypointForm(forms.ModelForm):
    def __init__(self, user, *args, **kwargs):
        super(waypointForm, self).__init__(*args, **kwargs)
        self.fields['waypoints'] = forms.ModelChoiceField(queryset=Waypoint.objects.filter(user=user))
Run Code Online (Sandbox Code Playgroud)

如何在基于类的视图中使用相同的功能CreateView,以便我可以覆盖表单字段?

我试过get_form_kwargsget_form,但一切都是徒劳.我需要创建一个模型表单吗?

django

5
推荐指数
2
解决办法
4048
查看次数

Django 完整性错误 1452,无法添加或更新子行:外键约束失败

模型.py:

from django.db import models

class Line(models.Model):
  text = models.CharField(primary_key=True, max_length=255)

class Line2 (models.Model):
  text_line = models.ForeignKey ("Line", primary_key = True)
Run Code Online (Sandbox Code Playgroud)

视图.py:

from django.core.context_processors import csrf
from django.shortcuts import render
import datetime
from models import Line, Line2

def test_page (request):
  if 'uid' in request.POST:
    user_id = request.POST['uid']
    line_query = Line.objects.get (text = user_id)
    new_entry = Line2 (text_line_id = line_query)
    new_entry.save()
    return render(request, "templateFiles/testPage1.html", {"page_result":"Data Entered"});
  else:
    return render(request, "templateFiles/testPage1.html")
Run Code Online (Sandbox Code Playgroud)

模板:

<div id = "header">
  {{ page_result }}
  <form action="http://127.0.0.1:8000/test_page/" method …
Run Code Online (Sandbox Code Playgroud)

python mysql django

5
推荐指数
1
解决办法
1万
查看次数

如何在Django中动态地向查询添加过滤器?

在我的viewSet中,我正在进行查询,

queryset= Books.objects.all();
Run Code Online (Sandbox Code Playgroud)

现在从ajax调用我从UI获得我的过滤器值,即auther的年龄,性别等.总共将有5个过滤器.

现在我遇到的问题是如何向查询添加过滤器(只有那些具有任何值的过滤器).

我尝试的是我检查了单个过滤器值并进行了查询,但这样就失败了,就像用户删除过滤器值或添加多个过滤器一样.任何更好的建议如何实现这一目标?

python django django-orm

5
推荐指数
3
解决办法
8731
查看次数

如何将现有的CharField和数据迁移到Django中的IntegerField

我的models.py中有一些带有CharFields的模型。

例如

class MyModel(models.Model):
    item_port = models.CharField(max_length=50)`
Run Code Online (Sandbox Code Playgroud)

我意识到这对于端口来说有点愚蠢,因此将它们全部更改为IntegerFields,如下所示:

class MyModel(models.Model):
    item_port = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)

我在本地开发系统和MySQL类型数据库中使用sqlite3进行部署。通常,使用以下命令从头进行部署时,我会为新的docker实例进行迁移:

python manage.py makemigrationspython manage.py migrate

但是,我还记录了在git中对sqlite3数据库所做的所有迁移,以供参考。

我的主要问题是,我是否可以简单地使用数据库中的现有数据从CharField进行makemigrations / migrate到IntegerField的迁移(在客户端站点上将是MySQL类型的数据库,还是我需要手动执行类似的操作?:

https://docs.djangoproject.com/zh-CN/1.9/topics/migrations/#data-migrations

非常感谢。

python mysql migration sqlite django

5
推荐指数
1
解决办法
851
查看次数

Django DetailView - 如何更改get_object以检查字段

所以我想做一个DetailView单独显示照片及其相关信息.但是,我想让它确保用户也有权访问照片.

这是视图的urls.py

url(r'^photo/(?P<slug>[\-\d\w]+)/$', views.PhotoDetail.as_view(), name='photo'),
Run Code Online (Sandbox Code Playgroud)

这是views.py

class PhotoDetail(DetailView):
    template_name = 'otologue/photo_detail.html'

    def get_object(self, queryset=None):
        slug = self.get_slug_field()
        print(slug)
        object_instance = Photo.objects.filter(slug=slug)
        print(object_instance)
        object_user = object_instance.photoextended.user
        user = get_object_or_404(User, username=self.request.user)  # Get the user in the view

        if object_user != user:  # See if the object_user is the same as the user
            return HttpResponseForbidden('Permission Error')

        else:
            return object_instance
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样我尝试get_slug_field()但是当我打印它时它只会说'slug'当slug应该说出url中的对象slug.从这里,object_instance没有任何对象,然后为什么我试图从中获取用户,它找不到任何数据.

python django django-views django-class-based-views

5
推荐指数
1
解决办法
1万
查看次数

django多对多形式显示人类可读

我有以下模型:

CURSES=(('python','Python'),('django','Django'),...)
class Asig(models.Model):
    ...
    name = models.CharField(max_length=100, choices=CURSES)

class Profesor(AbstractUser):
    ...
    asigs = models.ManyToManyField(Asig)
Run Code Online (Sandbox Code Playgroud)

然后,当我使用ModelForm渲染表单时,多对多字段使用'python'字符串而不是'Python'来显示自身,此外,当我查看呈现的html编码时,multiselect选项如下所示:

<option value='1'>python</option>
Run Code Online (Sandbox Code Playgroud)

代替

<option value='python'>Python</option> 
Run Code Online (Sandbox Code Playgroud)

django many-to-many

5
推荐指数
1
解决办法
253
查看次数