小编min*_*gle的帖子

Django为许多表建模一个外键

所以我有一个问题,我正在考虑创建一个具有其他几个表的外键的单个表,并使用另一个字段"type"来说明该键应该属于哪个表.

class Status(Models.model):
    request = models.ForeignKey("Request1", "Request2", "Request3")
    request_type = models.IntegerField()
    ...Some status related data

class Request1(Models.model):
    ...Some data

class Request2(Models.model):
    ...Some other data

Class Request3(Models.model):
   ...different data
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以定义这样的外键?我想到的另一个解决方案是像这样定义我的模型

class Status(Models.model):
    request1 = models.ForeignKey("Request1")
    request2 = models.ForeignKey("Request2")
    request3 = models.ForeignKey("Request3")
    ...Some status related data

class Request1(Models.model):
    ...Some data

class Request2(Models.model):
    ...Some other data

Class Request3(Models.model):
   ...different data
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,是否可以通过django定义约束,该约束表示只允许1个外键拥有数据而另外两个必须为空?或者我是否必须在db端严格设置此约束.(我正在使用postgres)我希望能够告诉django在创建db时这样做,所以我不必记住每次有人重新创建数据库.

任何意见或建议将不胜感激.我没有和这些想法中的任何一个结婚,所以如果有另一种聪明的方法来达到同样的效果,我就能听到它.感谢您的时间.

编辑:我正在使用django 1.7.10

python django postgresql django-models

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

第一个OS,一些流水线解释

我正在使用NASM编写我的第一个OS引导扇区.我有它的工作,它只显示"Hello OS world!" 用红色字母.很简单.我已将boot.asm转换为boot.bin,并将其转换为boot.img.我正在使用VMWare播放器,我将boot.img作为软盘驱动器安装并从那里启动它工作得很好.但是这个汇编代码有几行是我不明白的目的.

       org  07c00h                         
       mov  ax, cs
       mov  ds, ax
       mov  es, ax
       call DispStr         
       jmp  $           
   DispStr:
       mov  ax, BootMessage
       mov  bp, ax 
       mov  cx, 16  
       mov  ax, 01301h      ; 
       mov  bx, 000ch       ;
       mov  dl, 0           ;
       int  10h             ;
       ret
   BootMessage:     db  "Hello, OS world!"
       times    510-($-$$)  db  0   
       dw   0xaa55              ; 
Run Code Online (Sandbox Code Playgroud)

以分号结尾的行是我不理解的行.我做了很多谷歌搜索,并能够弄清楚其他的东西.我很擅长写作大会.因此,例如,我知道mov ax,01301h移动01301hAX寄存器.但我不明白为什么,或者有多01301h重要.我猜他们有点像格式化字符串的参数,但这只是猜测.任何和所有的帮助将不胜感激.

x86 assembly bios bootloader

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

Java将byte []转换为图像

我知道这似乎是一个常见的问题,但我在互联网上四处浏览,并尝试了许多不同的教程和方法来执行此操作。我想我很近,但不确定。我也正在使用Play Framework,但对于Java应该是相同的。这是我的错误

javax.image.IIOException: I/O error reading PNG header!
   at com.sun.plugins.png.PNGImageReader.readHeader(Unknown Source)
   ...
   ...
Caused by: java.io.EOFException
at javax.imageio.stream.ImageInputStreamImpl.readFully(Unknown Source)
  ...
Run Code Online (Sandbox Code Playgroud)

这是我的代码,在其中我从表单中获取图片并将图像转换为byte []并存储在MS SQL db中。

@Transactional
public static Result submitTrailer(){
     filledForm = newTrailerForm.bindFromRequest();
     MultipartFormData body = request().body().asMultipartFormData();
     FilePart picture = body.getFile("file");
     String fileName = picture.getFilename();
     System.out.println(fileName);
     String contentType = picture.getContentType(); 
     System.out.println(contentType);
     final File file = picture.getFile();
     filledForm.get().setContentType(contentType);

     try{
     BufferedImage originalImage = ImageIO.read(file);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     ImageIO.write(originalImage, contentType, baos);

     filledForm.get().setImage(baos.toByteArray());
     baos.flush();
     baos.close();
     filledForm.get().save();
     }catch(IOException e){
         e.printStackTrace();
     }

    return ok(views.html.index.index.render());
} …
Run Code Online (Sandbox Code Playgroud)

java sql playframework javax.imageio

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

Django 通用外键排序

所以我有一个与其他三个模型具有通用外键关系的模型

class Status(BaseRequestStatus):
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

class Request(models.Model):
    name = models.CharField(max_length=50, db_index=True)
    ...some fields
    statuses = GenericRelation(Status, related_query_name='request')

class AnotherRequest(models.Model):
    name = models.CharField(max_length=50, db_index=True)
    ...some fields
    statuses = GenericRelation(Status, related_query_name='another_request')

class ThirdRequest(models.Model):
    name = models.CharField(max_length=50, db_index=True)
    ...some fields
    statuses = GenericRelation(Status, related_query_name='third_request')
Run Code Online (Sandbox Code Playgroud)

所以目前我正在用表格中的名称显示状态。我希望能够按名称排序。目前我是这样排序的。

Status.objects.all().order_by('request__name', 'another_request__name', 'third_request__name')
Run Code Online (Sandbox Code Playgroud)

然而,使用这种方法,所有“请求”都被排序在一个块中,然后是“another_request”,然后是“third_request”

反正有没有把所有这些排序在一起?我可以通过将其转换为列表来实现。但在这种情况下,我需要使用 Queryset。

在此先感谢您的帮助。

python sql sorting generics django

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

python django 部分匹配正则表达式

所以我想过滤查询集并获取与单词部分匹配的所有对象

queryset.filter(name=r'regex')
Run Code Online (Sandbox Code Playgroud)

搜索词 = 应用

  • 苹果 = 真
  • 应用程序 = 真
  • 能力=假
  • 东西=假
  • 菠萝=真的

我对正则表达式真的很糟糕,任何帮助将不胜感激。

python regex django

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