标签: django-models

Django DoesNotExist

我在试图找出"DoesNotExist错误"时遇到问题,我试图找到管理无应答结果的正确方法,但是我继续遇到"DoesNotExist"或"对象没有属性DoestNotExists"的问题

from django.http import HttpResponse
from django.contrib.sites.models import Site
from django.utils import simplejson

from vehicles.models import *
from gpstracking.models import *


def request_statuses(request):

    data = []
    vehicles = Vehicle.objects.filter()
    Vehicle.vehicledevice_
    for vehicle in vehicles:
        try:
            vehicledevice = vehicle.vehicledevice_set.get(is_joined__exact = True)
            imei = vehicledevice.device.imei
            try:
                lastposition = vehicledevice.device.devicetrack_set.latest('date_time_process')
                altitude = lastposition.altitude
                latitude = lastposition.latitude
                longitude =  lastposition.longitude
                date_time_process = lastposition.date_time_process.strftime("%Y-%m-%d %H:%M:%S"),
                date_time_created = lastposition.created.strftime("%Y-%m-%d %H:%M:%S")
            except Vehicle.vehicledevice.device.DoesNotExist:
                lastposition = None
                altitude = None
                latitude = None
                longitude = None
                date_time_process = …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-views

71
推荐指数
4
解决办法
9万
查看次数

Django - 重写Model.create()方法?

Django文档只列出了重写的例子save()delete().但是,我想为我的模型创建一些额外的处理.对于熟悉Rails的人来说,这相当于创建一个:before_create过滤器.这可能吗?

django django-models django-forms

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

无法通过模型实例访问管理器

我正试图在另一个中获取模型对象实例.我提出这个错误:

 Manager isn't accessible via topic instance
Run Code Online (Sandbox Code Playgroud)

这是我的模特:

class forum(models.Model):
    # Some attributs

class topic(models.Model):
    # Some attributs

class post(models.Model):
    # Some attributs

    def delete(self):
        forum = self.topic.forum
        super(post, self).delete()
        forum.topic_count = topic.objects.filter(forum = forum).count()
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

def test(request, post_id):
    post = topic.objects.get(id = int(topic_id))
    post.delete()
Run Code Online (Sandbox Code Playgroud)

我得到:

post.delete()
forum.topic_count = topic.objects.filter(forum = forum).count()
Manager isn't accessible via topic instances
Run Code Online (Sandbox Code Playgroud)

django django-models django-managers instances

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

Django请求获取参数

在Django请求中,我有以下内容

POST:<QueryDict: {u'section': [u'39'], u'MAINS': [u'137']}>
Run Code Online (Sandbox Code Playgroud)

如何获得的价值sectionMAINS

if request.method == 'GET':
    qd = request.GET
elif request.method == 'POST':
    qd = request.POST

section_id = qd.__getitem__('section') or getlist....
Run Code Online (Sandbox Code Playgroud)

python django django-models django-views

70
推荐指数
2
解决办法
11万
查看次数

使用字符串而不是点语法访问Django模型的字段?

在Django中,我可以这样做:

test = Test.objects.get(id=1)
test.name
Run Code Online (Sandbox Code Playgroud)

我希望能够使用动态生成的字符串访问属性,如下所示:

test['name']
Run Code Online (Sandbox Code Playgroud)

或者,使用字符串的任何其他语法.我试过了

test._meta.get_field_by_name('name')
Run Code Online (Sandbox Code Playgroud)

但这会返回字段本身而不是值.

有任何想法吗?

django django-models

69
推荐指数
4
解决办法
3万
查看次数

每个型号多个图像

我正在Django写一个简单的房地产列表应用程序.每个属性需要具有可变数量的图像.图像需要具有可编辑的顺序.我需要让管理员用户证明.

那说,我的选择是什么?

  1. 是否有我不知道的ImageList字段?

  2. 有这样的应用程序django.contrib.comments对我有用吗?

  3. 如果我必须自己编写,我将如何使管理员方面体面?我想象的东西比ImageField提供的东西要漂亮得多,还有一些重新排序的拖延.但是我在编写管理页面时非常熟悉=(

django django-models

68
推荐指数
2
解决办法
3万
查看次数

编写__init__函数以在django模型中使用

我正在尝试为__init__我的一个模型编写一个函数,以便我可以通过执行来创建一个对象

p = User('name','email')
Run Code Online (Sandbox Code Playgroud)

当我写模型时,我有

def __init__(self, name, email, house_id, password):
    models.Model.__init__(self)
    self.name = name
    self.email = email
Run Code Online (Sandbox Code Playgroud)

这是有效的,我可以将对象保存到数据库中,但是当我执行'User.objects.all()'时,除非取出我的User.objects.all()功能,否则它不会提取任何内容.有任何想法吗?

python django django-models

68
推荐指数
3
解决办法
6万
查看次数

更新django数据库以反映现有模型的更改

我已经定义了一个模型并通过它创建了它的相关数据库manager.py syncdb.现在我已经为模型添加了一些字段,我syncdb再次尝试,但没有输出.在尝试从我的模板中访问这些新字段时,我得到一个"No Such Column"异常,这让我相信syncdb实际上没有更新数据库.这里的命令是什么?

python django django-models

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

Django使用contains过滤多对多

我试图通过多对多关系过滤一堆对象.因为trigger_roles字段可能包含多个条目,所以我尝试了包含过滤器.但是因为它被设计为与字符串一起使用,我几乎无能为力地过滤这种关系(你可以忽略values_list()atm.).

此功能附加到用户配置文件:

def getVisiblePackages(self):
    visiblePackages = {}   
    for product in self.products.all():
        moduleDict = {}
        for module in product.module_set.all():
            pkgList = []
            involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True)
Run Code Online (Sandbox Code Playgroud)

我的工作流模型看起来像这样(简化):

class Workflow(models.Model):
    module = models.ForeignKey(Module)
    current_state = models.ForeignKey(Status)
    next_state = models.ForeignKey(Status)
    allowed = models.BooleanField(default=False)
    involved_roles = models.ManyToManyField(Role, blank=True, null=True)
    trigger_roles = models.ManyToManyField(Role, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

虽然解决方案可能很简单,但我的大脑不会告诉我.

谢谢你的帮助.

python django many-to-many django-models django-orm

68
推荐指数
4
解决办法
7万
查看次数

Django ModelForm有一个隐藏的输入

所以我有我的TagStatus模型.我正在尝试为它制作一个ModelForm.但是,我的表单要求使用{{tag.name}}填充隐藏的输入.我一直在查看文档,我不知道如何使标记字段成为隐藏的输入.也许ModelForm不是要走的路?

models.py:

class TagStatus(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)
    status = models.CharField(max_length=2, choices=tag_statuses)
    tag = models.ForeignKey(Tag, null=True, blank=True)

    def __unicode__(self):
        return self.status

    def save(self, *args, **kwargs):
        super(TagStatus, self).save(*args, **kwargs)

class TagStatusForm(modelForm):
    class Meta:
        model = TagStatus
        fields = ('status','tag') 
        widgets = {
             'select': Select,
             'tag': ???
        }
Run Code Online (Sandbox Code Playgroud)

django views.py:

@login_required
def tags(request):
    all_tags = Tag.objects.all()
    context = base_context(request)
    if request.method == 'POST':
        if 'status_check' in request.POST:
            status_form = TagStatusForm(request.POST)
            #if request.is_ajax():
            if status_form.is_valid():
                status_form.save()
                response = simplejson.dumps({"status": "Successfully changed status"}) …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-forms

68
推荐指数
2
解决办法
7万
查看次数