当我尝试使用此指令在Django中转储模型的数据时:
python manage.py dumpdata app> temp_data.json
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
Error: One or more models did not validate:
asset.authpermission: "codename": CharField cannot have a "max_length" greater than 255 when using "unique=True".
asset.djangocontenttype: "app_label": CharField cannot have a "max_length" greater than 255 when using "unique=True".
asset.djangocontenttype: "model": CharField cannot have a "max_length" greater than 255 when using "unique=True".
Run Code Online (Sandbox Code Playgroud)
问题是这些表是由django自动生成的.另外,我刚刚检查了数据库(mysql),字段是varchar(100).
怎么了 ?
这是我的用例:
所以基本上我使用了一个非常方便的函数insert_or_update_many:
但这引入了并发问题.例如:如果在步骤1期间不存在对象,则将其添加到稍后要插入的对象列表中.但在此期间可能会发生另一个Celery任务创建该对象,并且当它尝试执行批量插入时(步骤3),我收到重复条目的错误.
我想我需要在'阻塞'块中包含3个步骤.我已经阅读了有关交易的内容,并且我试图将步骤1,2,3包含在一个with transaction.commit_on_success:块内
with transaction.commit_on_success():
cursor.execute(sql, parameters)
existing = set(cursor.fetchall())
if not skip_update:
# Find the objects that need to be updated
update_objects = [o for (o, k) in object_keys if k in existing]
_update_many(model, update_objects, keys=keys, using=using)
# Find the objects that need to be inserted.
insert_objects = [o for (o, k) in object_keys if k not in existing]
# Filter out any …Run Code Online (Sandbox Code Playgroud) 我希望foreign key我的模型中的关系与表中的username字段User(存储user创建的django.contrib.auth.forms.UserCreationForm).
我的模型看起来如何:
class Blog(models.Model):
username = models.CharField(max_length=200) // this should be a foreign key
blog_title = models.CharField(max_length=200)
blog_content = models.TextField()
Run Code Online (Sandbox Code Playgroud)
该username字段应该是外键.外键应该在此字段中
我正在尝试使用 Django 创建一个问答网站,并且我想为所有应用程序使用多个数据库
但我不想重新配置我的模型和应用程序。
我怎样才能做到这一点??
注意:论坛是实现问答网站的应用程序
最近我一直在努力学习Django中的web开发,我很高兴...
但是,有一点真的很烦人 - 特别是当你了解django背后的'简单'哲学时.
这是在django中更新表格真的远离我刚刚经历的简单性.
例如,就像我的真实案例一样,我在开头跳过为条目标题添加一个slug字段.但过了一段时间,我想在表格中添加一个slug列,就像每个人一样 - 这是django中的新手可能期望的,我试过python manage.py syncdb命令.当然它不起作用......经过一番搜索后我发现"我需要在dbshell命令行中手动添加一个新列"(我使用的数据库是mysql).
我不知道为什么,但我认为这是一个非常有趣的事情,在我看到在django中创建一个简单的网站之后,我从未想到过.难道你们都不这么认为吗?或者,如果您有任何其他解决方案或任何其他问题,请与您分享?
提前致谢...
PS.我不介意在shell中与db相处,但我想知道的是为什么它在django中就像那样...
当一个字段发生变化时,我需要做一些动作.
由于此操作需要使用已保存的对象,我不能使用这样的pre_save信号:
@receiver(pre_save, sender=reservation_models.Reservation)
def generate_possible_pairs(sender, instance, **kwargs):
try:
reservation_old = sender.objects.get(pk=instance.pk)
except sender.DoesNotExist:
pass # Object is new, so field hasn't technically changed, but you may want to do something else here.
else:
if not reservation_old.datetime == instance.datetime: # Field has changed
do_something(instance) # It would be better to be sure instance has been saved
Run Code Online (Sandbox Code Playgroud)
是否有可能使用post_save信号?
我想避免为此模型添加临时属性.
我正在学习 Django,我需要知道我是否可以将数据库中已经存在的表链接到模型(因为我听说 Django 为我们在 django app 中创建的任何模型创建了表)。
如果是这样,怎么做?
django django-models django-database django-database-functions
我有两个database兴趣,基本的和开发的:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| projectsdb |
| projectsdb_dev |
+--------------------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
在我的 django 文件中mysite/mysite/settings.py,我的数据库是这样声明的:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'projectsdb',
'USER': 'projectsdb',
'PASSWORD': 'notsecure',
'HOST': 'localhost', # Or an IP Address that your DB is hosted on
'PORT': '3306',
}
}
Run Code Online (Sandbox Code Playgroud)
允许的主机是:
ALLOWED_HOSTS = ['xxx.xx.xxx.xx'] # I replaced it for the example
Run Code Online (Sandbox Code Playgroud)
我在用于开发的端口 8006 上启动服务器:
$ python ./manage.py runserver …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 django 项目,并且想在其中实现一个跟随/跟随系统,目前我有一个朋友系统,顺便说一句,它根本不起作用,但我只想知道如何编写该代码,这个想法就是拥有一个像 instagram 一样的朋友系统。
模型.py 文件
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_pic = models.ImageField(upload_to='profile_pics', null=True, blank=True, default='default.png')
bio = models.CharField(max_length=400, default=1, null=True)
def __str__(self):
return f'{self.user.username} Profile'
Run Code Online (Sandbox Code Playgroud)
视图.py 文件
def profile(request, username=None):
profile, created=Profile.objects.get_or_create(user=request.user)
if username:
post_owner = get_object_or_404(User, username=username)
user_posts = Profile.objects.filter(user_id=post_owner)
else:
post_owner = request.user
user_posts = Profile.objects.filter(user=request.user)
args1 = {
'post_owner': post_owner,
'user_posts': user_posts,
}
return render(request, 'profile.html', args1)
Run Code Online (Sandbox Code Playgroud) 我在 django 中创建了一个新项目,并尝试连接到 sql server 2019。
因此,我安装了 sql-server-2019,安装后,我检查 ODBC DRIvers 是否正常,如您所见,到目前为止一切正常。
我做的下一件事是pip install django-pyodbc-azure
我安装了更多软件包,因为我正在测试我发现的所有内容,到目前为止我总是遇到相同的错误。
这意味着conn = Database.connect(connstr, django.db.utils.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且没有预定义驱动程序 (0) (SQLDriverConnect )已指定)
这是我来自 django 的 settings.py:
我被困在这里,我什至不知道我能做什么
django ×10
django-database ×10
python ×4
django-mysql ×1
django-users ×1
django-views ×1
dump ×1
mysql ×1
python-3.x ×1
sql ×1
sql-server ×1
transactions ×1