标签: django-models

跨越关系的 Django 查找 - 如何

我有一个地址模型,它有一个联系人模型的外键:

class Address(models.Model):
    street = models.CharField(max_length=25)
    postal_code = models.CharField(max_length=25)
    city = models.CharField(max_length=50)
    country = models.CharField(max_length=50)
    contact = models.ForeignKey(Contact, related_name='address to contact')

class Contact(models.Model):
    salutation = models.CharField(max_length=1, choices=salutation_choices, verbose_name="salutation")
    title = models.ForeignKey(Title, blank=True, null=True)
    ...
Run Code Online (Sandbox Code Playgroud)

现在我想根据地址对象的数据过滤我的联系人对象。因此,我想创建一个跨越关系的过滤器,遵循文档的这一部分:

查找跨度关系

我是这样试的:

result_set = Contact.objects.filter(address__street__contains='mystreet')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Cannot resolve keyword 'address' into field. Choices are: address to contact, birthdate..
Run Code Online (Sandbox Code Playgroud)

实际上错误消息告诉我有一个字段地址要联系,但问题是我如何引用它?

django django-models

0
推荐指数
1
解决办法
1318
查看次数

django 中的单向一对多和多对可能

我是 Django 的新手。我有 2 个简单的对象,我们称它们为 - File 和 FileGroup: - FileGroup 可以保存一个文件列表,根据“顺序”字段进行排序。- 每个文件可以与多个组相关联。

所以基本上,数据库表将是:1) File 2) File_Group 3) File_Group_Mapping 表,除了文件和文件组的 fk 之外,还有一个名为“order”的列。

这里存在多对多关系,但 File 对象不应该知道 FileGroup 的存在(在我的情况下没有意义)

我的问题 - 有没有办法在这里创建单向多对多/一对多关系?如何使用 django 对其进行建模?

我找不到通过 django 使其成为单向的方法。我看到了一个使用类似的解决方案 -

class FileGroup(...):
    files = models.ManyToManyField(File, through='FileGroupMapping')
Run Code Online (Sandbox Code Playgroud)

但这将使 File 对象知道 FileGroup。

我也可以通过在模型文件中映射 File_Group_Mapping 表来做到这一点 -

class FileGroupMapping(...):
     files = models.ForeignKey(File)
     groups = models.ForeignKey(FileGroup)
     order = models...
Run Code Online (Sandbox Code Playgroud)

通过 django 执行此操作的最佳方法是什么?

谢谢

django entity-relationship django-models

0
推荐指数
1
解决办法
856
查看次数

Django - 限制 models.ForeignKey() 中的条目

是否可以根据某些条件限制 models.ForeignKey() 字段中的条目?

customer = models.ForeignKey(Customer)
Run Code Online (Sandbox Code Playgroud)

我只需要显示处于活动状态的客户。

django django-models django-admin

0
推荐指数
1
解决办法
1905
查看次数

在 Django 中,如何在 3 个字段上创建唯一值?

class ExternalFriends(models.Model):
    external_user = models.ForeignKey(User)
    name = models.CharField(max_length=20, null=False, blank=False, db_index=True)
    external_account_id = models.CharField(max_length=200, null=True, blank=True, db_index=T
rue)
Run Code Online (Sandbox Code Playgroud)

所以假设我希望所有 3 个字段都是“unique_together”。我怎样才能做到这一点?

python mysql database django django-models

0
推荐指数
1
解决办法
1190
查看次数

默认模型管理器只获取属于登录用户的对象

当我得到一个对象列表时,我只想要属于登录用户的对象。

我在想,也许这可以通过覆盖默认管理器在模型管理器中完成,但我不确定如何登录使用。这是我到目前为止...

class GroupsManager(models.Manager):
    def get_query_set(self):
        return super(GroupsManager, self).get_query_set().filter(user=???????)
Run Code Online (Sandbox Code Playgroud)

我在正确的轨道上吗?我怎样才能实现我的目标?或者有没有更好的方法来做到这一点?

谢谢。

django django-models django-managers

0
推荐指数
1
解决办法
517
查看次数

如何仅显示 django 中的最后一个条目?

我正在使用 Django 1.5.1。我的第一页顶部有一个 ImageModel。
如何仅显示此模型的最后一个条目?

#model.py
    class Vitrin(models.Model):
        title = models.CharField(max_length=200)
        image = models.ImageField(upload_to = 'images/vitrin/')
        date_created = models.DateTimeField(auto_now=True)  

#views.py
def index(request):
    categories = Category.objects.all()[:5]
    pages = Page.objects.all()[:5]
    vitrins = Vitrin.objects.all().reverse()[0]
    return render(request, 'gallery/index.html', {'categories': categories, 'pages':pages, 'vitrins': vitrins})   

#index.html
    <div class='vitrin'>
            {% for vitrin in vitrins %}
                <img src="{{ vitrin.image.url|last }}" height="550">
            {% endfor %}
    </div>
Run Code Online (Sandbox Code Playgroud)

但我收到错误:“Vitrin”对象不可迭代

Request Method: GET
Request URL:    http://localhost:8000/
Django Version: 1.5.1
Exception Type: TypeError
Exception Value:    
'Vitrin' object is not iterable
Exception Location: …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-views

0
推荐指数
1
解决办法
1209
查看次数

访问 Django 模型的 Cron 作业

我做了什么?

我在 django 中编写了一个小型应用程序,其中有几个以 sqlite3 作为后端的模型。现在我想编写一个基于特定条件清除数据库元素的 python 代码。

题:

我怎样才能达到上述要求?

django django-models

0
推荐指数
1
解决办法
744
查看次数

django 中 /admin/course/course/add/ 处的 IntegrityError

当我尝试添加内容或课程时出现此错误。它工作正常,现在我收到此错误。我已经将它上传到 heroku 并且它工作正常,只是在本地开发中它不会添加任何内容。有人可以解释一下出了什么问题。请还指定我应该添加哪些附加信息?

IntegrityError at /admin/course/course/add/

insert or update on table "django_admin_log" violates foreign key constraint "django_admin_log_user_id_fkey"
DETAIL:  Key (user_id)=(2) is not present in table "auth_user".

Request Method:     POST
Request URL:    http://127.0.0.1:8888/admin/course/course/add/
Django Version:     1.5.1
Exception Type:     IntegrityError
Exception Value:    

insert or update on table "django_admin_log" violates foreign key constraint "django_admin_log_user_id_fkey"
DETAIL:  Key (user_id)=(2) is not present in table "auth_user".

Exception Location:     /home/vagrant/sai/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py in _commit, line 240
Python Executable:  /home/vagrant/sai/bin/python
Python Version:     2.7.3
Run Code Online (Sandbox Code Playgroud)

django django-models django-urls django-admin django-views

0
推荐指数
1
解决办法
2952
查看次数

什么时候评估 Django QuerySet?

我读过 django 查询集很懒。但这是否意味着懒惰,因为我可以在一个语句上链接多个操作,或者懒惰,因为查询被延迟到需要结果的时候。例如,以下模拟代码是否执行两个或三个 SQL 查询?

query = Books.objects.filter(pk=book_id)
if query.exists():
  result = query.get()
else:
# ...
Run Code Online (Sandbox Code Playgroud)

python django django-models

0
推荐指数
1
解决办法
1795
查看次数

如何让通用 ListView 只显示用户的列表?

我是 Django 的新手,我第一次使用基于类的视图。我想使用通用 ListView 来显示用户拥有的“表”列表。到目前为止,我已经让它显示了数据库中的所有表。但我只希望它显示登录用户的表格。

这就是我的观点:

from django.shortcuts import render
from django.http import HttpResponse
from django.views import generic
from vtables.models import Vtable

class TableListView(generic.ListView):

    model = Vtable
    context_object_name = 'table_list'

    def get_context_data(self, **kwargs):
        context = super(TableListView, self).get_context_data(**kwargs)
        return context
Run Code Online (Sandbox Code Playgroud)

这就是我的模型的样子:

from django.db import models
from django.contrib.auth.models import User

class Vtable(models.Model):
    user = models.ForeignKey(User)
    table_name = models.CharField(max_length=200)
    added_date = models.DateTimeField('date added')

class Vdata(models.Model):
    table_id = models.ForeignKey(Vtable)
    table_pk = models.IntegerField()
    column_1 = models.CharField(max_length=200)
    column_2 = models.CharField(max_length=200)
    added_date = models.DateTimeField('date added')
Run Code Online (Sandbox Code Playgroud)

我承认,我不确定这条线在做什么:

context …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-views

0
推荐指数
1
解决办法
2026
查看次数