我有一个地址模型,它有一个联系人模型的外键:
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 的新手。我有 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 执行此操作的最佳方法是什么?
谢谢
是否可以根据某些条件限制 models.ForeignKey() 字段中的条目?
customer = models.ForeignKey(Customer)
Run Code Online (Sandbox Code Playgroud)
我只需要显示处于活动状态的客户。
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”。我怎样才能做到这一点?
当我得到一个对象列表时,我只想要属于登录用户的对象。
我在想,也许这可以通过覆盖默认管理器在模型管理器中完成,但我不确定如何登录使用。这是我到目前为止...
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 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 中编写了一个小型应用程序,其中有几个以 sqlite3 作为后端的模型。现在我想编写一个基于特定条件清除数据库元素的 python 代码。
题:
我怎样才能达到上述要求?
当我尝试添加内容或课程时出现此错误。它工作正常,现在我收到此错误。我已经将它上传到 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 查询集很懒。但这是否意味着懒惰,因为我可以在一个语句上链接多个操作,或者懒惰,因为查询被延迟到需要结果的时候。例如,以下模拟代码是否执行两个或三个 SQL 查询?
query = Books.objects.filter(pk=book_id)
if query.exists():
result = query.get()
else:
# ...
Run Code Online (Sandbox Code Playgroud) 我是 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) django ×10
django-models ×10
django-views ×3
python ×3
django-admin ×2
database ×1
django-urls ×1
mysql ×1