在Django中,有一个地方我可以获得ORM知道的模型列表或查找模型吗?
我有很多对象要保存在数据库中,所以我想用它创建Model实例.
使用django,我可以创建所有模型实例,MyModel(data)然后我想将它们全部保存.
目前,我有类似的东西:
for item in items:
object = MyModel(name=item.name)
object.save()
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以直接保存对象列表,例如:
objects = []
for item in items:
objects.append(MyModel(name=item.name))
objects.save_all()
Run Code Online (Sandbox Code Playgroud)
如何在一个事务中保存所有对象?
我有一个问题.在Django中我创建了一个新模型:
from django.db import models
from django.contrib.auth import user
class Workers(models.Model):
user = models.OneToOneField(User, primary_key=True)
work_group = models.CharField(max_length=20)
card_num = models.IntegerField()
def __unicode__(self):
return self.user
Run Code Online (Sandbox Code Playgroud)
但它不起作用: ImportError: cannot import name user
怎么解决?
所以,我想在db中创建一个新表"workers",它OneToOne与表"auth_user" 有关系.谢谢.
如果有办法防止两个或多个用户同时修改同一数据库条目?
向执行第二次提交/保存操作的用户显示错误消息是可以接受的,但不应以静默方式覆盖数据.
我认为锁定条目不是一个选项,因为用户可能会使用"后退"按钮或只是关闭他的浏览器,永远保持锁定.
我正在尝试将models.py我的应用程序拆分为几个文件:
我的第一个猜测是这样做:
myproject/
settings.py
manage.py
urls.py
__init__.py
app1/
views.py
__init__.py
models/
__init__.py
model1.py
model2.py
app2/
views.py
__init__.py
models/
__init__.py
model3.py
model4.py
Run Code Online (Sandbox Code Playgroud)
这不起作用,然后我找到了这个,但在这个解决方案中我仍然有一个问题,当我运行时,python manage.py sqlall app1我有类似的东西:
BEGIN;
CREATE TABLE "product_product" (
"id" serial NOT NULL PRIMARY KEY,
"store_id" integer NOT NULL
)
;
-- The following references should be added but depend on non-existent tables:
-- ALTER TABLE "product_product" ADD CONSTRAINT "store_id_refs_id_3e117eef" FOREIGN KEY ("store_id") REFERENCES "store_store" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX "product_product_store_id" ON …Run Code Online (Sandbox Code Playgroud) 我正在将Django管理员设置为以下模型:
class Quote(models.Model):
author = models.CharField(max_length=100)
quote = models.CharField(max_length=1000)
tags = models.ManyToManyField('Tag')
class Tag(models.Model):
name = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
使用以下代码:
class TagInline(admin.TabularInline):
model = Tag
class QuoteAdmin(admin.ModelAdmin):
list_display = ('author', 'quote')
inlines = (TagInline,)
class TagAdmin(admin.ModelAdmin):
pass
admin.site.register(Quote, QuoteAdmin)
admin.site.register(Tag, TagAdmin)
Run Code Online (Sandbox Code Playgroud)
在尝试查看管理页面以添加时Quote,该页面显示错误说明<class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>.在添加内联之前没有发生这种情况.有什么问题?如何正确添加Tag内联?
(我花了大约20分钟寻找答案;我发现了类似的问题,但他们的答案都没有对我有用.)
假设我的models.py是这样的:
class Character(models.Model):
name = models.CharField(max_length=255)
is_the_chosen_one = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
我只想要我的一个Character实例is_the_chosen_one == True和其他所有实例is_the_chosen_one == False.如何才能最好地确保这种唯一性约束得到尊重?
考虑到尊重数据库,模型和(管理员)表单级别约束的重要性的答案的最高分!
我知道Django不支持跨多个数据库的外键(最初是Django 1.3 docs)
但我正在寻找一种解决方法.
我在一个单独的数据库上有两个模型.
routers.py:
class NewsRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'news_app':
return 'news_db'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'news_app':
return 'news_db'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'news_app' or obj2._meta.app_label == 'news_app':
return True
return None
def allow_syncdb(self, db, model):
if db == 'news_db':
return model._meta.app_label == 'news_app'
elif model._meta.app_label == 'news_app':
return False
return None
Run Code Online (Sandbox Code Playgroud)
fruit_app/models.py中的模型1:
from django.db import models
class Fruit(models.Model):
name …Run Code Online (Sandbox Code Playgroud) 我有一个模特
class Survey(models.Model):
created_by = models.ForeignKey(User)
question = models.CharField(max_length=150)
active = models.NullBooleanField()
def __unicode__(self):
return self.question
Run Code Online (Sandbox Code Playgroud)
现在我想只更新active字段.所以我这样做:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Run Code Online (Sandbox Code Playgroud)
现在我收到一个错误IntegrityError: PRIMARY KEY must be unique.
我是否正确使用此方法进行更新?
我正在Django中构建一个Web应用程序.我有一个上传文件的模型,但我无法删除它.这是我的代码:
class Song(models.Model):
name = models.CharField(blank=True, max_length=100)
author = models.ForeignKey(User, to_field='id', related_name="id_user2")
song = models.FileField(upload_to='/songs/')
image = models.ImageField(upload_to='/pictures/', blank=True)
date_upload = models.DateField(auto_now_add=True)
def delete(self, *args, **kwargs):
# You have to prepare what you need before delete the model
storage, path = self.song.storage, self.song.path
# Delete the model before the file
super(Song, self).delete(*args, **kwargs)
# Delete the file after the model
storage.delete(path)
Run Code Online (Sandbox Code Playgroud)
然后,在"python manage.py shell"中我这样做:
song = Song.objects.get(pk=1)
song.delete()
Run Code Online (Sandbox Code Playgroud)
它从数据库中删除,但不从服务器上的文件中删除.我还能尝试什么?
谢谢!
django ×10
django-models ×10
atomic ×1
concurrency ×1
database ×1
django-admin ×1
django-forms ×1
django-orm ×1
django-views ×1
import ×1
python ×1
transactions ×1