标签: models

在 Django Admin 中使用属性

我有一个字段定义为的模型

p = models.DecimalField(max_digits=12, decimal_places=6)
Run Code Online (Sandbox Code Playgroud)

但decimal_places=6 仅用于内部精度。我只想在管理字段中显示 2 个小数位。所以我想也许我可以用属性做点什么。但是属性不会在管理界面中显示为字段。例如:数据库记录:100.256754 admin 编辑字段显示:100.26

有没有办法做到这一点?

django admin decimal models

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

Rails:检查模型是否有项目

我有一个叫做书的模型.我希望能够检查它是否有一个ID为某个数字的书.这是一个简单的问题,我只是在学习.不要太苛刻....

ruby-on-rails models

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

Django模型的递归关系

  1. 为什么要创建递归关系?
  2.     aField = models.ForeignKey('self')
    
  3. 这与上述相同吗?
        class aClass(models.Model):  
        aField = models.ForeignKey('aClass')

django recursion relationship models

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

如何解决:validates.rb:96:在`在块中验证验证':未知的验证器(...)

我开始学习Rails,我无法继续前进,因为我在尝试运行时遇到错误:

bundle exec rspec spec/
Run Code Online (Sandbox Code Playgroud)

我认为错误发生在我的"models/users.rb"文件中:

class User < ActiveRecord::Base
  attr_accessible :email, :name

  before_save { |user| user.email = email.downcase }

  validates :name, presence: true, length: { maximum: 50}
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, format: {with: VALID_EMAIL_REGEX }, 
                                uniquiness: {  case_sensitive: false }
end
Run Code Online (Sandbox Code Playgroud)

在此之前,我做错了一件事:我应该在哪里打字

      uniquiness: { case_sensitive: false }
Run Code Online (Sandbox Code Playgroud)

我键入:

      uniquiness { case_sensitive: false }
Run Code Online (Sandbox Code Playgroud)

并且,在我看到此错误之前,我在项目中进行了一些更改(创建了迁移,运行本地服务器等).我记得我执行过这些命令:

      bundle exec rake db:migrate
      bundle exec rake db:test:prepare
      bundle exec rspec /spec
Run Code Online (Sandbox Code Playgroud)

以下是我得到的错误:

Rack :: File头参数在Rack 1.5之后替换cache_control./usr/lib/ruby/gems/1.9.1/gems/activemodel-3.2.12/lib/active_model/validations/validates.rb:96:in在块中的救援'在验证中':未知验证器:'UniquinessValidator'(ArgumentError )(...)

有人可以帮帮我吗?谢谢大家:P

ruby ruby-on-rails models rails-models

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

Django get_full_name() 和 get_short_name() 之间的区别

我有个疑问。我正在做一个 AbstractBaseUser ,Django 1.6 的文档说这是关于获取电子邮件以识别用户,但我不明白这两个函数有什么区别:

#Documentation Django 1.6

def get_full_name(self):
    # The user is identified by their email address
    return self.email

def get_short_name(self):
    # The user is identified by their email address
    return self.email
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释一下其中的区别吗?谢谢。

python django models

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

django 模型请求获取 id 错误房间匹配查询不存在

我有两个模型,当我执行 request.POST.get('room_id') 或 ('id') 时,我收到一个错误房间匹配查询不存在。如何解决这个问题?帮我

    教室(模型。模型):
        status = models.BooleanField('Status',default=True)
        name = models.CharField('Name', max_length=100, unique=True)

    类书(模型。模型):
        date = models.DateTimeField('Created',auto_now_add=True)
        from_date = models.DateField('签到')
        to_date = models.DateField('退房')
        room = models.ForeignKey(Room, related_name='booking')

我需要详细的房间请求获取 ID,预订日期范围(from_date,to_date)

def room_detail(请求,pk):
    房间 = get_object_or_404(房间,pk=pk)
    如果 request.method == 'POST':
        form = BookForm(request.POST,room=room)
        如果 form.is_valid():
            s = form.save(commit=True)          
            s.save()
            返回重定向(请求。路径)
    别的:
        表单 = BookForm()

    #roomid = Room.objects.values('id')
    type = request.POST.get('id') # 或 get('room_id')
    rooms = Room.objects.get(id=type)

    start_dates = rooms.booking.values_list('from_date',flat=True)
    end_dates = rooms.booking.values_list('to_date',flat=True)
    日期 = [start + timedelta(days=i) for start, end in …

django django-queryset models python-3.x

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

在 django 中上传时替换文件

我的models.py中有以下代码:

def upload_to_cars(instance, filename):
    blocks = filename.split('.')
    ext = blocks[-1]
    filename = "%s.%s" % (instance.name.replace(" ", "-"), ext)
    instance.title = blocks[0]
    return filename

class Cars(models.Model):
    image_file = models.ImageField(upload_to=upload_to_cars, null=True, blank=True)
    name = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

当我上传第二张图片时,我希望删除第一张图片。这样每个汽车类别总是只有一个图像。相反,当我上传第二个时,django 会在文件名的末尾添加一些字符。

我是这么想的

filename = "%s.%s" %
Run Code Online (Sandbox Code Playgroud)

旧图像将被替换?

有什么建议吗?

谢谢 !

编辑

感谢 zxzak 我做到了,对我来说,它的工作方式略有不同(使用os.remove(path)):

    try:
        this = Company.objects.get(id=self.id)
        if this.image_file:
            os.remove(this.image_file.path)
    except ObjectDoesNotExist:
        pass
Run Code Online (Sandbox Code Playgroud)

python django image-uploading models

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

什么是 OOP 中的消息传递?

一般来说,我对消息传递感兴趣。

我读了很少的定义,但对我来说它的真正含义仍然完全不清楚和抽象。

现在,这就是让我感到震惊的地方 MP 是至关重要的......

基于类的面向对象的编程语言支持由它们的类定义的对象。类定义包括成员数据。消息传递是面向对象语言中的一个关键概念(如果不是关键概念的话)

所以,有人可以用一些类比或一些例子向我解释什么是消息传递(尽可能)清晰的英语。

我确实有大约一年的编程经验,但主要是在 CodeAcademy 上,还有各种书籍、YouTube 视频和维基百科文章。

oop channel models

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

如何过滤和计算 DJANGO 模板中的对象?

你好,我只是想问这个,因为我是 django 新手,我的麻烦是我想计算有多少评论有一个帖子并将其放入 html 模板。但问题是我使用 for 来收集数据库中的所有事件,但我只想显示包含“for”正在显示的每个事件的评论计数。这是我的模型、视图和模板。非常感谢。

楷模

class Event(TimeStampModel):
    name = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(editable=False)
    summary = models.TextField(max_length=255)
    content = models.TextField()
    category = models.ForeignKey(Category)
    place = models.CharField(max_length=50)
    start = models.DateTimeField()
    finish = models.DateTimeField()
    image = models.ImageField(upload_to = 'eventos')
    is_free = models.BooleanField(default=True)
    amount = models.DecimalField(max_digits=6, decimal_places=0, default=0) 
    views = models.PositiveIntegerField(default=0)
    organizer = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)

    def save(self, *args, **kwargs):
        if not self.id:
            self.slug = slugify(self.name)
        super(Event, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.name

class Comments(TimeStampModel):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    event = …
Run Code Online (Sandbox Code Playgroud)

python django class function models

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

如何将来自不同模型的两个查询集合并为一个?

我需要将来自不同模型的两个查询集合并为一个。我在网上找到的最推荐的解决方案是:

使用|and &,但这仅适用于来自同一模型的查询集

使用chainand list,但这会带走一些查询集方法,并且由于我项目中代码的结构方式,我无法更改它。我试过了,没有用。

我读过Q,但我不清楚如何应用它来完成我需要的。

基本上我需要将来自不同模型的两个查询集组合成第三个查询集,而不是列表。它们共享一些字段名称,也许这对Q. 例如:

queryset_1 = Cars.objects.all().filter(color='red')
queryset_2 = Horses.objects.all()

queryset_3 = queryset_1 + queryset_2

queryset_3.order_by('date')
Run Code Online (Sandbox Code Playgroud)

python django django-queryset models

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