我有模型AppVersion,App& DeployApp。在AppVersion 模型中,用户可以将 APK 文件上传到文件系统。我使用的pre_save信号,以防止同样的上传APK文件version_code的具体App是这样的:
@receiver(pre_save, sender=AppVersion)
def prevent_duplicate_version_code(sender, instance, **kwargs):
qs = AppVersion.objects.filter(app_uuid=instance.app_uuid, version_code=instance.version_code)
if qs.exists():
raise FileExistsError("Version code has to be unique for a specific app")
Run Code Online (Sandbox Code Playgroud)
这个信号做我想要的,除了当我试图在 bridge-table 中创建一个对象时它也会引发错误DeployApp。
# models.py
class App(models.Model):
app_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
app_name = models.CharField(max_length=100)
class AppVersion(models.Model):
app_version_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
app_uuid = models.ForeignKey(App, on_delete=models.CASCADE, related_name='app_versions')
app_version_name = models.CharField(max_length=100)
version_code = models.IntegerField(blank=True, null=True, …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个 Django ImageField 类函数来调整图像大小,但是我不确定这个函数在哪里接受我的新图像尺寸
在 Linux 和 Python 3.7 上运行
我看过这个文档,但不太理解它:https : //docs.djangoproject.com/en/1.11/_modules/django/db/models/fields/files/#ImageField
如果有人可以向我展示如何使用此功能的示例,我将不胜感激。
编辑
我还没有成功地调整我的图像尺寸,这就是我想要实现的。鉴于它正在被获取,ImageField我如何在保存它之前调整它的大小(我找到了update_dimensions_fields类函数,ImageField但是我不知道如何使用它)
class Posts(models.Model):
title = models.CharField(max_length=200, blank=True)
body = models.TextField(blank=True)
created_at = models.DateTimeField(default=datetime.datetime.now)
post_image = models.ImageField(upload_to=get_image_path, blank=True, null=True)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
# I would like to use the function beneath to resize my images before I save them to my database
self.post_image.update_dimension_fields(self, instance, force=False, *args, **kwargs)
super().save(*args, **kwargs) # Call the "real" save() …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的数据库创建一个填充脚本,但我收到一个 No module named 错误。
Project Structure:
staticone/
manage.py
mysite/
populate_rango
settings
urls
__init__
wsgi
rango/
Run Code Online (Sandbox Code Playgroud)
追溯:
Traceback (most recent call last):
File "populate_rango.py", line 8, in <module>
django.setup()
File "/home/ubuntu/virtenv/webstatic/lib/python3.5/site-
packages/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/ubuntu/virtenv/webstatic/lib/python3.5/site-
packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/home/ubuntu/virtenv/webstatic/lib/python3.5/site-
packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in …Run Code Online (Sandbox Code Playgroud) 我正在使用 docker 运行 Postgres 图像。它曾经在 Windows10 和 Ubuntu 18.04 上运行没有任何问题。
在 Ubuntu 系统上重新克隆项目password authentication failed for user "postgres"后,运行docker-compose up.
在Ubuntu系统上重新克隆项目之前,它曾经运行没有任何问题,它在Windows10系统上仍然可以正常运行。
我的docker-compose.yml:
version: '2'
services:
postgresql:
image: 'bitnami/postgresql:latest'
ports:
- '5432:5432'
environment:
- POSTGRESQL_USERNAME=someuser
- POSTGRESQL_PASSWORD=mysecretpassword
- POSTGRESQL_DATABASE=mydatabase
Run Code Online (Sandbox Code Playgroud)
我试图sudo docker system prune删除所有停止的容器及其未使用的网络。这并不能解决问题。
我需要更改/做什么才能使 Postgres 映像能够再次在 Ubuntu 系统上成功运行?
完整的错误:
postgresql_1 | nami INFO Initializing postgresql
postgresql_1 | postgre INFO ==> No injected postgresql.conf file found.
Creating default postgresql.conf file...
postgresql_1 | postgre INFO ==> …Run Code Online (Sandbox Code Playgroud) 对于特定用例,我需要能够Visitor使用 GET 请求而不是 PATCH 请求更新模型的单个字段。
我的相关访客模型如下所示:
# models.py
class Visitor(models.Model):
visitor_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
customers = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name='customer_visitors')
audiences = models.ManyToManyField(Audience, related_name='audience_visitors')
cid = models.CharField(max_length=255, unique=True)
uid = models.CharField(max_length=255)
cup = JSONField(null=True)
def __str__(self):
return self.cid
class Meta:
db_table = 'visitor'
Run Code Online (Sandbox Code Playgroud)
我正在使用这样一个简单的序列化程序:
# serializers.py
class VisitorSerializer(serializers.ModelSerializer):
class Meta:
model = Visitor
fields = ('customers', 'cid', 'uid', 'cup')
Run Code Online (Sandbox Code Playgroud)
我可以只更新cup特定字段的字段,该字段Visitor是使用cid带有 PATCH的唯一字段查找的,如下所示:
# views.py
class VisitorViewSet(viewsets.ModelViewSet):
serializer_class = VisitorSerializer
queryset = …Run Code Online (Sandbox Code Playgroud) 我想使用Selenium webdriver 和 Python制作网页的屏幕截图并将其保存在自定义位置。我尝试使用 Firefox 和 Chrome 将屏幕截图保存到自定义位置,但它始终将屏幕截图保存在项目目录中。这是我的 Firefox 版本:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.dir",
'C:\\Users\\User\\WebstormProjects')
binary = FirefoxBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe")
def foxScreen():
driver = webdriver.Firefox(firefox_binary=binary,
firefox_profile=profile)
driver.get("http://google.com")
driver.save_screenshot("foxScreen.png")
driver.quit()
if __name__ == '__main__':
foxScreen()
Run Code Online (Sandbox Code Playgroud)
这是我的 Chrome 版本:
from selenium import webdriver
options = webdriver.ChromeOptions()
prefs = {"download.default_directory": r'C:\\Users\\User\\WebstormProjects',
"directory_upgrade": True}
options.add_experimental_option("prefs", prefs)
chromedriver =
"C:\\Users\\User\\Downloads\\chromedriver_win32\\chromedriver.exe"
def chromeScreen():
driver = webdriver.Chrome(chrome_options=options,
executable_path=chromedriver)
driver.get("http://google.com")
driver.save_screenshot("chromeScreen.png")
driver.quit()
if __name__ …Run Code Online (Sandbox Code Playgroud) python selenium webdriver selenium-chromedriver selenium-webdriver