鉴于:
from django.db import models
class Food(models.Model):
"""Food, by name."""
name = models.CharField(max_length=25)
class Cat(models.Model):
"""A cat eats one type of food"""
food = models.ForeignKey(Food)
class Cow(models.Model):
"""A cow eats one type of food"""
food = models.ForeignKey(Food)
class Human(models.Model):
"""A human may eat lots of types of food"""
food = models.ManyToManyField(Food)
Run Code Online (Sandbox Code Playgroud)
一个人,只给出食物类,如何获得一组与"反向关系"的所有类.即给出食物类,如何获得猫,牛和人类课程.
我认为这是可能的,因为Food有三个"反向关系":Food.cat_set,Food.cow_set和Food.human_set.
帮助谢谢,谢谢!
使用Django multidb,编写运行主/从基础结构的路由器相当容易.但是有可能编写一个写入多个数据库的路由器吗?我的用例是一组项目,都在同一个域上运行.为了节省用户在每个站点上注册/登录,我想同步contrib.auth和contrib.sessions表.这是可能的Django multidb还是我应该研究数据库系统的复制功能(在我的情况下是MySQL)?
我想在我的ModelForm中过滤ManyToManyField选项:
class MyForm(forms.ModelForm):
class Meta:
model = Entity
fields = ['parent_entities']
def __init__(self, *args, **kwargs):
self.root_entity = kwargs.pop('root_entity')
self.Meta.fields['parent_entities'].queryset = Entity.objects.filter(root_entity=self.root_entity)
super(MyForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我尝试过很多我见过的不同代码,但还没有任何工作.
我想我的问题是我无法获得这个'parent_entities'字段.使用此代码,我有错误:
list indices must be integers, not str
Run Code Online (Sandbox Code Playgroud) 在django中处理whith模型继承时,是否可以删除模型子类的实例,而无需删除超类本身?
使用Django示例,您可以只删除Resturaunt对象并保留Place对象吗?
我有一个包含大约30k记录的表,我正在尝试迭代并使用Django的ORM进行处理.每个记录存储几个二进制blob,每个blob可以是几MB,我需要处理和写入文件.
但是,由于内存限制,我在使用Django时遇到了麻烦.我的系统上有8GB的内存,但在处理了大约5k的记录之后,Python进程消耗了所有8GB并被Linux内核杀死.我已经尝试了各种技巧来清除Django的查询缓存,例如:
MyModel.objects.update()settings.DEBUG=Falsegc.collect()但是,这些似乎没有任何明显的效果,我的过程继续遇到某种内存泄漏,直到它崩溃.
还有什么我可以做的吗?
由于我只需要一次处理一个记录,并且我从不需要在进程中再次访问同一记录,所以我不需要保存任何模型实例,或者一次加载多个实例.你如何确保只加载一条记录,并且Django 没有缓存任何内容并在使用后立即取消分配所有内存?
我正在使用django 1.5,我正在尝试做这样的事情:
quotes = formset.save()
user = client_form.save()
for quote in quotes:
quote.client = user
quotes.save()
Run Code Online (Sandbox Code Playgroud)
但是列表没有save()方法,所以有一些内置的功能可以做类似的事情吗?
我发现这个关于在Django中批量保存对象的问题
django 1.5仍然是真的吗?有没有办法避免对列表的每个对象进行save()调用?
这是我的实际视图代码:
def new_quote(request):
QuoteLineFormSet = modelformset_factory(QuoteLine, form=QuoteLineForm, extra=2)
if request.method == 'POST':
formset = QuoteLineFormSet(request.POST, request.FILES, queryset=QuoteLine.objects.none())
quote_form = QuoteForm(request.POST, request.FILES)
if formset.is_valid() and quote_form.is_valid():
quote_lines = formset.save(commit=False)
#quote_lines = formset.get_queryset()
quote = quote_form.save()
for quote_line in quote_lines:
quote_line.quote = quote
quote_line.save()
request.session['quote_id'] = quote.id
return HttpResponseRedirect(reverse('new_client'))
else:
formset = QuoteLineFormSet(queryset=QuoteLine.objects.none())
quote_form = QuoteForm()
return render(request, 'request_quote_form.html', {
'formset': …Run Code Online (Sandbox Code Playgroud) 我想将图像从一个模型复制到项目中的另一个模型。假设这些是我的模型:
class BackgroundImage(models.Model):
user = models.ForeignKey(User)
image = models.ImageField(upload_to=get_upload_file_name)
caption = models.CharField(max_length=200)
pub_date = models.DateTimeField(default=datetime.now)
class ProfilePicture(models.Model):
user = models.ForeignKey(User)
image = models.ImageField(upload_to=get_upload_file_name)
caption = models.CharField(max_length=200)
pub_date = models.DateTimeField(default=datetime.now)
@classmethod
def create_from_bg(cls, bg_img):
img = cls(user=bg_img.user, image=bg_img.image, caption=bg_img.caption+'_copy', pub_date=bg_img.pub_date)
img.save()
return img
Run Code Online (Sandbox Code Playgroud)
现在,我可以执行以下操作:
获取用户
>>>m = User.objects.get(username='m')
Run Code Online (Sandbox Code Playgroud)
获取用户的个人资料图片集
>>>m_pro_set = m.profilepicture_set.all()
>>>m_pro_set
[<ProfilePicture: pro_mik>]
Run Code Online (Sandbox Code Playgroud)
从用户的背景图像获取图像对象
>>>m_back_1 = m.backgroundimage_set.get(id=2)
>>>m_back_1
<BackgroundImage: bg_mik>
Run Code Online (Sandbox Code Playgroud)
然后:
>>>profile_pic = ProfilePicture.create_from_bg(m_back_1)
Run Code Online (Sandbox Code Playgroud)
现在,当我检查它时,它确实创建了一个新实例。
>>>m_pro_set
[<ProfilePicture: pro_mik>,<ProfilePicture: bg_mik>]
Run Code Online (Sandbox Code Playgroud)
但是,如果我检查路径,甚至检查媒体文件夹,它的图像都是相同的,而不是图像文件的实际副本。
>>>profile_pic.image
<ImageFileField: uploaded_files/1389904144_ken.jpg>
>>>m_back_1.image
<ImageFileField: uploaded_files/1389904144_ken.jpg>
Run Code Online (Sandbox Code Playgroud)
我该如何file在模型中实际复制原始图像?任何帮助都感激不尽!谢谢。
是否可以在一个Django进程中使用多个并发事务?
具体来说,我有两个函数应同时执行(相互之间产生),但每个函数应在各自的事务中执行。例如:
def process_things(callback, things):
with start_transaction():
for thing in things:
obj = Thing.objects.create(…)
callback(obj)
def callback(obj):
with start_separate_transaction():
…
ThingProcessingLog.objects.create(…)
Run Code Online (Sandbox Code Playgroud)
我希望每个函数都可以在独立的数据库事务中运行,因此在此示例中,ThingProcessingLog记录将被创建并立即可见,但是在Thing对象全部处理完之后这些对象才可见。
我该如何使用Django的ORM?
我想这个问题非常简单而且简短......
有没有简单的方法来反转Django中的查询集的顺序?
例:
li = [1,2,3]
queryset = Collection.objects.filter(pk__in = li)
如何在Django中执行多列组?
我只看过一个列组的例子.
下面是我想要转换为Django ORM的查询.
SELECT order_id,city,locality,login_time,sum(morning_hours),sum(afternoon_hours),sum(evening_hours),sum(total_hours)
FROM orders
GROUPBY order_id,city,locality,login_time`
Run Code Online (Sandbox Code Playgroud)