小编tru*_*one的帖子

我可以在select元素的选项中使用HTML标记吗?

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)呈现的.

html javascript css jquery

45
推荐指数
2
解决办法
9万
查看次数

如何备份django db

我有一个使用Postgres数据库的Django应用程序.我需要能够备份和恢复数据库,以确保没有数据丢失,并且能够在测试期间将数据从生产服务器复制到开发服务器.

似乎有几种不同的方法可以做到这一点:

  1. 只需直接与db交互.因此,对于Postgres,我可能会使用pg_dumpall和编写脚本psql.

  2. 使用Django 附带的sqlclear/ sqlall命令.

  3. 使用Django 附带的dumpdata/ loaddata命令.因此,从要备份的db创建新的fixture,然后将它们加载到要还原的db中.

  4. 使用Django插件,如django-dbbackup.

我真的不明白这些不同技术的优点/缺点.

刚刚开始:选项1是特定于数据库的,选项3似乎更适合设置初始数据.但我仍然不确定选项4对选项2的优势.

django database-restore database-backups

41
推荐指数
2
解决办法
2万
查看次数

混淆了django foreignkey,manytomanyfield,inlineformset_factories

所有,

我遗漏了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")的所有字段.

只是输入这个问题的行为让我感到困惑.任何人都可以阐明如何构建一个包含所有汽车领域的形式,然后是所有制造商领域,然后是所有轮子领域.

谢谢

django many-to-many foreign-keys inline-formset

9
推荐指数
1
解决办法
5382
查看次数

如何在 Docker 容器中运行 pdb

我显然不明白这里的一些东西。我正在尝试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)

python pdb docker

8
推荐指数
2
解决办法
3457
查看次数

如何在 Django JSONField 中保留键顺序

我很难保留存储在 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)

django django-jsonfield jsonencoder jsondecoder

7
推荐指数
1
解决办法
1411
查看次数

如果值为 null,自定义 Django Rest Framework 序列化器字段不会运行 `to_representation()`

我想要一个自定义(只读)序列化器字段来替换序列化值(如果是)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 serialization django-rest-framework

6
推荐指数
1
解决办法
2268
查看次数

即使版本没有改变,也强制 pipenv(重新)从 github 安装一个包

我正在开发一个使用该应用程序的 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 重新安装某些东西,即使它通常不会?

python pip github pipenv

6
推荐指数
1
解决办法
1192
查看次数

如何有效地将数据从 geopandas 保存到 django(从 shapely 转换为 geodjango)?

我正在操作 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)

python django geodjango shapely geopandas

5
推荐指数
1
解决办法
3754
查看次数

如何过滤反向外键字段上的 Django 注释

我正在尝试获取具有特定字段值的所有相关模型的计数。

这是一些代码...

模型.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 django-aggregation

3
推荐指数
1
解决办法
2448
查看次数

在Django Rest Framework中使用HyperlinkedField进行序列化

所有,

我无法使我的模型的关系字段之一显示为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)

django serialization django-rest-framework

2
推荐指数
1
解决办法
4078
查看次数

定义一个使用bootstrap类的自定义css类

所有,

有没有办法定义使用现有引导类的自定义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)

但是有更好的解决方案吗?

javascript css jquery twitter-bootstrap

2
推荐指数
2
解决办法
2211
查看次数

无法将嵌套应用程序中的自定义 Django 模型指定为 AUTH_USER_MODEL

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”。

这是一个与这个问题非常相似的问题。但是如何在不诉诸my_child_app单独的顶级应用程序的情况下解决此问题?

django

2
推荐指数
1
解决办法
745
查看次数