小编Cim*_*aio的帖子

Django-PolymorphicModels - 删除实例时出错

这是我第一次尝试“PolymorphicModel”,也许我做错了什么,或者我正在尝试做一些不受支持的事情。有办法解决这个问题吗?

我的简化模型:

from django.polymorphic import PolymorphicModel


class Question(PolymorphicModel):
    description = models.TextField(default='')

    compound_question = models.ForeignKey('CompoundQuestion',
                                          on_delete=models.CASCADE,
                                          blank=True,
                                          null=True,
                                          related_name='sub_questions')

    bonus_question = models.OneToOneField('BonusQuestion',
                                          on_delete=models.CASCADE,
                                          blank=True,
                                          null=True,
                                          related_name='question')


class SimpleQuestion(Question):
    pass


class CompoundQuestion(Question):
    pass


class BonusQuestion(Question):
    pass
Run Code Online (Sandbox Code Playgroud)

如果我创建必要的实例,

compound_q = CompoundQuestion()
compound_q.save()
simple_q2 = SimpleQuestion(compound_question=compound_q)
simple_q2.save()
bonus_q = BonusQuestion(compound_question=compound_q)
bonus_q.save()
simple_q1 = SimpleQuestion(bonus_question=bonus_q)
simple_q1.save()
Run Code Online (Sandbox Code Playgroud)

所以最后我得到:

compound_q.sub_questions.all()
>>> <PolymorphicQuerySet [<BonusQuestion: BonusQuestion object (5)>, <SimpleQuestion: SimpleQuestion object (8)>]>
Run Code Online (Sandbox Code Playgroud)

完成后compound_q.delete() 我得到:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File ".../Python/Django/env/lib/python3.6/site-packages/django/db/models/base.py", line …
Run Code Online (Sandbox Code Playgroud)

python django django-models python-3.x django-polymorphic

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

我的Parser类的类型有什么问题?

这些天我一直有一些空闲时间,所以我决定学习一些haskell。

为了练习,我正在翻译我在SCALA的一个班级所做的项目。但是我对这部分代码有疑问。这很容易理解。

这个想法是为一些解析器建模,该解析器将使用一些字符串,并将其解析为一个包含解析元素“ output”和“ remainder”(无法解析的字符串的一部分)的ParserOutput。

我可以不用定义一个新的类就可以做到这一点(只使用数据“ MyParser”),但是我认为定义一个类很有趣,这样我就可以在一个地方定义我希望解析器工作的所有方法。

data ParserOutput a = 
    Failure | Success { output :: a, remainder :: String } 
        deriving (Show)

data MyParser t = MyParser (String -> ParserOutput t)

class Parser p where
    parse :: p -> String -> ParserOutput t

instance Parser (MyParser t) where
    parse (MyParser parserDefinition) = parserDefinition
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

data ParserOutput a = 
    Failure | Success { output :: a, remainder :: String } 
        deriving (Show)

data MyParser t = MyParser (String -> …
Run Code Online (Sandbox Code Playgroud)

haskell class instance

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

在路径字符串上将'\\'更改为'/'

我试图从给定的路径读取和写入文件。问题是,当我从文件(在Windows上为Im)复制路径时,它使用'\'作为路径分隔符,但haskell似乎无法理解它,因为例如:“ aDir \ file.txt”错误地读取了'\ f'是无效字符。

这就是为什么我试图创建一个函数来将该路径“标准化”(转换)为一个以“ /”作为路径分隔符的函数(它可以正常工作)的原因,但是我想,由于同样的原因,它不起作用。有没有内置的功能已经为我做到了?

main :: String -> (String -> String) -> IO ()
main path transformation = do
    let normalizedPath = normalizePath path
    contenido <- readFile normalizedPath
    let resultado = transformation contenido
    writeFile normalizedPath resultado

normalizePath :: String -> String
normalizePath = map f 
    where
        f '\\' = '/'
Run Code Online (Sandbox Code Playgroud)

haskell

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