这是我第一次尝试“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) 这些天我一直有一些空闲时间,所以我决定学习一些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) 我试图从给定的路径读取和写入文件。问题是,当我从文件(在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)