HTML select元素的选项是否可以包含HTML标记?
例如,给出以下代码:
<select>
<option value="one"><b>one is bold</b></option>
<option value="two">two has some <span style='color:red;'>red</span> text</option>
<option value="three">three is just normal</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我想要用HTML实际渲染的选项.在这个应用程序中,我可以使用HTML,CSS,JavaScript(包括jQuery).HTML本身是通过Django(django.form.fields.select)呈现的.
我有一个使用Postgres数据库的Django应用程序.我需要能够备份和恢复数据库,以确保没有数据丢失,并且能够在测试期间将数据从生产服务器复制到开发服务器.
似乎有几种不同的方法可以做到这一点:
只需直接与db交互.因此,对于Postgres,我可能会使用pg_dumpall和编写脚本psql.
使用Django 附带的sqlclear/ sqlall命令.
使用Django 附带的dumpdata/ loaddata命令.因此,从要备份的db创建新的fixture,然后将它们加载到要还原的db中.
使用Django插件,如django-dbbackup.
我真的不明白这些不同技术的优点/缺点.
刚刚开始:选项1是特定于数据库的,选项3似乎更适合设置初始数据.但我仍然不确定选项4对选项2的优势.
所有,
我遗漏了Django的ForeingKeys和ManyToManyFields底层模型的基本内容.
假设我正在构建一个关于汽车的应用程序.我可能有以下课程:
class Car(models.Model):
carName = models.CharField()
class Manufacturer(models.Model):
manufacturerName = models.CharField()
class Wheel(models.Model):
radius = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在这些类之间存在一些关系.汽车有制造商,有(四)轮胎.从概念上讲,虽然存在差异.制造商通过"聚合"相关; 制造商可以与多辆汽车相关联; 删除Car实例不应该导致该汽车的制造商被删除.车轮通过"组合"相关; 与汽车相关的每四个车轮都只与那辆汽车相关联; 删除汽车,也应删除车轮.
所以,直观地说,这意味着我应该做以下事情:
class Car(models.Model):
carName = models.CharField()
manufacturer = models.ManyToManyField("Manufacturer")
wheels = models.ForeignKey("Wheel")
Run Code Online (Sandbox Code Playgroud)
最终,我想使用inlineformset_factories,以便用户可以同时填写有关汽车,其制造商和车轮的详细信息.像这样的东西:
class CarForm(ModelForm):
class Meta:
model = Car
class ManufacturerForm(ModelForm):
class Meta:
model = Manufacturer
class WheelForm(ModelForm):
class Meta:
model = Wheel
Manufacturer_formset = inlineformset_factory(Car,Manufacturer,formset=ManufacturerForm)
Wheel_formset = inlineformset_factory(Car,Wheel,formset=WheelForm)
Run Code Online (Sandbox Code Playgroud)
但是我发现的大多数文档都表明ForiegnKey应该从Wheel转向Car.这看起来倒退了,因为Wheel_formset会向用户显示Car("carName")而不是Wheel("radius")的所有字段.
只是输入这个问题的行为让我感到困惑.任何人都可以阐明如何构建一个包含所有汽车领域的形式,然后是所有制造商领域,然后是所有轮子领域.
谢谢
我显然不明白这里的一些东西。我正在尝试pdb在 Docker 容器中以交互方式运行调试器。
这是一些代码:
Dockerfile:
FROM python:3.6
ENV PROJECT_DIR=/opt/foo
WORKDIR $PROJECT_DIR
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "foo.py"]
Run Code Online (Sandbox Code Playgroud)
foo.py:
def hello_world():
print("hello world")
if __name__ == '__main__':
#import pdb; pdb.set_trace()
hello_world()
Run Code Online (Sandbox Code Playgroud)
如果我运行docker build -t foo .然后docker run foo,它会按预期打印出“hello world”。
但是如果我取消对pdb.set_trace()上面的调用的注释并重试,我会收到以下错误:
/opt/foo/foo.py(8)<module>()
-> hello_world()
(Pdb)
Traceback (most recent call last):
File "foo.py", line 8, in <module>
hello_world()
File "foo.py", line 8, in <module>
hello_world()
File "/usr/local/lib/python3.6/bdb.py", line 51, in …Run Code Online (Sandbox Code Playgroud) 我很难保留存储在 Django JSONField 中的 JSON 对象中的键顺序。我已尝试按照文档使用自定义编码器和解码器,但 JSON 对象不断重新排序自身:
>>>from models import MyModel
>>>my_dict = {"c": 3, "b": 2, "a": 1}
>>>my_model = MyModel()
>>>my_model.my_field = my_dict
>>>my_model.save()
>>>my_model.refresh_from_db()
>>>my_model.my_field
OrderedDict([('a',1), ('b', 2), ('c', 3)])
Run Code Online (Sandbox Code Playgroud)
我原以为它会回来OrderedDict([('c',3), ('b', 2), ('a', 1)])。
这是我到目前为止所尝试过的:
模型.py:
import collections
import json
from django.db import models
class OrderedEncoder(json.JSONEncoder):
def encode(self, o):
if isinstance(o, collections.OrderedDict):
encoded_objs = [
f"{self.encode(k)}: {self.encode(v)}"
for k, v in o.items()
]
return f"{{{','.join(encoded_objs)}}}"
else:
return super().encode(o)
class OrderedDecoder(json.JSONDecoder):
def __init__(self, …Run Code Online (Sandbox Code Playgroud) 我想要一个自定义(只读)序列化器字段来替换序列化值(如果是)None。我以为我可以覆盖to_representation(),但这似乎没有运行。这是一些代码:
模型.py:
class Book(models.Model):
title = models.CharField(max_length=255)
rating = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)
序列化器:
class ReplaceableSerializerField(serializers.ReadOnlyField):
def to_representation(self, value):
if value is None:
return "this book sucks"
return value
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ("title", "rating",)
rating = ReplaceableSerializerField(allow_null=True)
Run Code Online (Sandbox Code Playgroud)
如果我然后执行以下操作:
hamlet = Book(title="Hamlet")
BookSerializer(instance=hamlet).data
Run Code Online (Sandbox Code Playgroud)
我得到以下回复:
{'title': 'Hamlet', 'rating', None}
Run Code Online (Sandbox Code Playgroud)
请注意评级是如何的,None而不是“这本书很糟糕”。
关于如何强制to_representation()在空字段上运行的任何想法?
我正在开发一个使用该应用程序的 django-resuable-app(“通用功能”)和一个 django-project(“我的项目”)。这些存储在单独的 github 存储库中,并且 my-project 引用 common-functionality 作为可编辑的依赖项:
文件:
common-functionality = {editable = true,git = "https://github.com/my-organization/common-functionality-users",ref = "master"}
Run Code Online (Sandbox Code Playgroud)
我如何确保每次重新运行时都安装了最新版本的通用功能pipenv install?
如果“setup.py”中的版本发生变化,pipenv 似乎只会更新依赖项。每次将通用功能推送到 github 时,我都必须更改吗?或者有其他方法可以解决这个问题吗?
其实,我错了。即使版本更改,也不会从 github 重新安装最新代码。据推测,这是 b/c 在“Pipfile.lock”中没有任何变化。所以问题仍然存在:有没有办法强制pipenv 重新安装某些东西,即使它通常不会?
我正在操作 GIS 数据并将geopandas其存储在各种Django模型中。 在引擎盖下geopandas使用,而没有。 shapelyDjango
这是一些代码:
import geopandas as gpd
from django.contrib.gis.db import models
class MyModel(models.Model):
geometry = models.PolygonField()
name = models.CharField(max_length=255, null=False, unique=True)
some_property = models.IntegerField()
gdf = gpd.read_file("some_data.geojson")
# ...do some stuff w/ gdf...
for data in gdf.to_dict("records"):
name = data.pop("name")
MyModel.objects.create_or_update(
name=name,
defaults=data,
)
Run Code Online (Sandbox Code Playgroud)
上面的代码将会失败,并出现以下错误:
类型错误:无法使用类型值设置 MyModel SpatialProxy (POLYGON):<class 'shapely.geometry.polygon.Polygon'>
除非我添加一些讨厌的代码,例如:
from django.contrib.gis.geos import fromstr, Polygon
data["geometry"] = Polygon(fromstr(str(data["geometry"])))
Run Code Online (Sandbox Code Playgroud)
有没有办法避免这种情况并直接映射 from shapelyto Django?
编辑:
以下是一些值:
>> data["geometry"] …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取具有特定字段值的所有相关模型的计数。
这是一些代码...
模型.py:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
BAD = "BAD"
MEH = "MEH"
GOOD = "GOOD"
GREAT = "GREAT"
REVIEW_CHOICES = (
(BAD, BAD.title()),
(MEH, MEH.title()),
(GOOD, GOOD.title()),
(GREAT, GREAT.title()),
)
title = models.CharField(max_length=100)
review = models.CharField(max_length=100, choices=REVIEW_CHOICES)
author = models.ForeignKey(Author, related_name="books")
Run Code Online (Sandbox Code Playgroud)
假设我想列出每个作者的每种类型评论的数量。
我试过了:
Authors.object.annotate(n_good_books=Count("books")).filter(books__review="GOOD").values("name", "n_good_books")
Run Code Online (Sandbox Code Playgroud)
我也试过:
Authors.object.annotate(n_good_books=Count("books", filter=Q(books_review="GOOD"))).values("name", "n_good_books")
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用。
有什么建议?
所有,
我无法使我的模型的关系字段之一显示为Django Rest Framework中的超链接.(我正在处理http://www.django-rest-framework.org/api-guide/relations/上提供的示例.)这是我的代码:
models.py:
class Album(models.Model):
album_name = models.CharField(max_length=100)
artist = models.CharField(max_length=100)
class Track(models.Model):
album = models.ForeignKey(Album, related_name='tracks')
order = models.IntegerField()
title = models.CharField(max_length=100)
duration = models.IntegerField()
class Meta:
unique_together = ('album', 'order')
ordering = ['order']
def __unicode__(self):
return '%d: %s' % (self.order, self.title)
Run Code Online (Sandbox Code Playgroud)
serializers.py:
class AlbumSerializer(serializers.ModelSerializer):
tracks = serializers.StringRelatedField(many=True)
class Meta:
model = Album
fields = ('album_name', 'artist', 'tracks')
class TrackSerializer(serializers.ModelSerializer):
# THIS WORKS...
# album = serializers.SlugRelatedField(slug_field="album_name", read_only=True)
# THIS DOES NOT WORK...
album = …Run Code Online (Sandbox Code Playgroud) 所有,
有没有办法定义使用现有引导类的自定义CSS类?
例如,请考虑以下HTML代码段:
<div class="text-primary center-block">Here is some text</div>
Bootstrap将自动使其变为蓝色并居中并显示块.但是要添加所有这些类需要记住很多.我可以使用自己的课程:
<div class="my_class">Here is some text</div>
并在CSS文件中以某种方式添加那些Bootstrap属性?
我能想到的唯一解决方案是使用这样的JQuery:
$(document).ready(
function() {
$(".my_class").each(function() {
$(this).addClass("text-primary center-block");
});
}
);
Run Code Online (Sandbox Code Playgroud)
但是有更好的解决方案吗?
AUTH_USER_MODEL如果该模型在嵌套应用程序中,我无法指定自定义。
下面是一些项目结构:
??? project
? ??? settings.py
? ??? my_parent_app
? ? ??? __init__.py
? ? ??? apps.py
? ? ??? my_child_app
? ? ??? __init__.py
? ? ??? apps.py
? ? ??? models.py
Run Code Online (Sandbox Code Playgroud)
这是一些代码:
项目/my_parent_app/my_child_app/models.py:
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
is_a_nice_user = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
项目/settings.py:
INSTALLED_APPS = [
'my_parent_app',
'my_parent_app.my_child_app',
]
AUTH_USER_MODEL = 'my_parent_app.my_child_app.User'
Run Code Online (Sandbox Code Playgroud)
当我尝试做任何事情时,我收到此错误:
ValueError:无效的模型引用“my_parent_app.my_child_app.User”。字符串模型引用的格式必须为“app_label.ModelName”。
django ×8
python ×3
css ×2
javascript ×2
jquery ×2
docker ×1
foreign-keys ×1
geodjango ×1
geopandas ×1
github ×1
html ×1
jsondecoder ×1
jsonencoder ×1
many-to-many ×1
pdb ×1
pip ×1
pipenv ×1
shapely ×1