我几周前使用Django我开始使用django app并在model.py中编写这些行
from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_lenght=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.model.CharField(max_length=50)
website = models.URLField()
class Author(models.Model):
first_name = models.CharFiled(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
Run Code Online (Sandbox Code Playgroud)
当我尝试验证或sqlall时
python manage.py validate
or
python manage.py sqlall appname
Run Code Online (Sandbox Code Playgroud)
它会打印此错误消息
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
438, in execute_manager
utility.execute() …Run Code Online (Sandbox Code Playgroud) 我有一个问题是为我的模型添加自定义方法.我在django书中找到了解决方案,但它不起作用.这是我的模型代码
class NewsManager(models.Manager):
def getLastNews(self):
return self.objects.order_by('-id')[:3]
class News(models.Model):
title=models.SlugField()
shortBody=models.CharField(max_length=250)
fullBody=models.TextField()
author=models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
现在我跑去python manage.py shell打字
from news.models import *
News.objects.getLastNews()
...
Attribute error Manager object have no attribute getLastNews
Run Code Online (Sandbox Code Playgroud)
我在哪里犯了错误?
顺便说一句,这是从模型获取信息并将其传递给视图的好方法吗?
我想做点什么
for field in field_list:
my_table.field = new_value
Run Code Online (Sandbox Code Playgroud)
无法找到有关如何使用变量执行上述操作的任何文档.
我仍处于Django应用程序的开发阶段.在编写我的views.py之前,我测试它们以查看我的模型是否正确定义.这是我通过调用在终端中完成的
python manage.py shell
但是哦,我经常做一些语法错误,提示我中止shell ctrl-D并重新输入所有内容.这个过程将永远持续下去.如果我能在一些文件中将所有这些写入我的试验并且如果所有的都很好地复制它会更好views.py.
这个过程是什么?它就像trial.py在我的app目录中创建一样简单.我不能导入Django环境吗?最好的方法是什么?
在我的Django应用程序中,我具有从数据库中删除模型的单个实例的代码。两个并发请求都可能同时尝试删除同一模型。在这种情况下,我希望一个请求成功而另一个请求失败。我怎样才能做到这一点?
问题在于,当使用删除实例时delete(),Django不会返回有关命令是否成功的任何信息。此代码说明了问题:
b0 = Book.objects.get(id=1)
b1 = Book.objects.get(id=1)
b0.delete()
b1.delete()
Run Code Online (Sandbox Code Playgroud)
这两个delete()命令中只有一个实际上删除了该对象,但是我不知道哪个。不会引发任何异常,也不会返回任何指示命令成功的信息。在纯SQL中,该命令将返回删除的行数,如果该值为0,我知道删除失败。
我将PostgreSQL与默认的Read Commited隔离级别配合使用。我对此级别的理解是,每个命令(SELECT,DELETE等)都可以看到数据库的快照,但是下一个命令可以看到数据库的不同快照。我相信这意味着我不能做这样的事情:
# I believe this wont work
@commit_on_success
def view(request):
try:
book = Book.objects.get(id=1)
# Possibility that the instance is deleted by the other request
# before we get to the next delete()
book.delete()
except ObjectDoesntExist:
# Already been deleted
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我知道models.DateField(),但我希望能够添加一个独立于日期的24小时时间.我该如何做到这一点?
我有一个看起来像这样的数据结构(简化版)
class A(models.Model):
a = models.IntegerField()
class B(models.Model):
c = models.OneToOneField(A)
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,我必须执行什么样的查询才能找到B类的所有对象b,使得bca = 1?
谢谢.
I have a UserProfile model with related_name='profile' for the User FK.
Let's say I have a User obj, user1. If I want to get the UserProfile object from the user1, what is the difference between using user1.profile.all() and user1.get_profile() in terms of db hits and efficiency?
我在Django中为模型管理器提供了两种自定义方法.其中一个有效.我最近添加了另一个和Django(和python)的行为,就像它不存在一样.这是模型的相关部分:
class FigureServerManager(models.Manager):
#This method takes as input a user and grabs a figure that is not marked complete for which that user has not already submitted a result
def serve_to_user(self,user):
not_complete=super(FigureServerManager, self).get_query_set().filter(complete=0)
for Figure in not_complete:
checkifresult=User.objects.get(pk=user).result_set.all().filter(figure=Figure.id)
if not checkifresult:
return Figure
#This is a copy of the above method that I want to change to do something else, but I can't even get it to show up yet
def serve_training_task(self, user):
with_correct_ans=super(FigureServerManager, self).get_query_set().filter(complete=0)
for Figure in with_correct_ans:
checkifresult=User.objects.get(pk=user).result_set.all().filter(figure=Figure.id) …Run Code Online (Sandbox Code Playgroud) 作为这个问题的后续内容,我想确定正在发生的实际错误.我做错了什么,或者这是一个错误?
f = {'groups__isnull': 'True'}
students1 = models.Student.objects.filter( **f )
students2 = models.Student.objects.filter(groups__isnull=True)
Run Code Online (Sandbox Code Playgroud)
这两个查询应该相同,但不是.
作为参考,我的模型:
class Student (models.Model):
user = models.ForeignKey(User, unique=True, null=False, related_name='student')
teacher = models.ForeignKey(User, null=False, related_name='students')
assignment = models.ForeignKey(LabJournal, blank=True, null=True, related_name='students')
class JournalGroup (models.Model):
title = models.CharField(null=False, max_length=256)
owner = models.ForeignKey(User, null=True, related_name='journal_groups')
members = models.ManyToManyField(Student, blank=True, related_name='groups')
Run Code Online (Sandbox Code Playgroud) django ×10
django-models ×10
python ×4
database ×1
django-views ×1
methods ×1
object ×1
postgresql ×1
transactions ×1