(Django 2.0、Python 3.6、Django Rest Framework 3.8)
我正在尝试填写以下模型中的 calendarydays 字段:
型号
class Bookings(models.Model):
booked_trainer = models.ForeignKey(TrainerProfile, on_delete=models.CASCADE)
booked_client = models.ForeignKey(ClientProfile, on_delete=models.CASCADE)
trainer_availability_only = models.ForeignKey(Availability, on_delete=models.CASCADE)
calendarydays = models.CharField(max_length=300, blank=True, null=True)
PENDING = 'PENDING'
CONFIRMED = 'CONFIRMED'
CANCELED = 'CANCELED'
STATUS_CHOICES = (
(PENDING, 'Pending'),
(CONFIRMED, 'Confirmed'),
(CANCELED, 'Canceled')
)
booked_status = models.CharField(
max_length = 9,
choices = STATUS_CHOICES,
default = 'Pending'
)
def __str__(self):
return str(self.trainer_availability_only)
现在,我有一个函数,它从 trainer_availability_only 获取值并将这些值转换为日期时间字符串列表,返回的输出如下所示:
{'calendarydays': ['2018-07-23 01:00:00', '2018-07-23 02:00:00', '2018-07-23 03:00:00', '2018-07-30 01:00:00', '2018-07-30 02:00:00', '2018-07-30 03:00:00', '2018-08-06 01:00:00', '2018-08-06 02:00:00', '2018-08-06 03:00:00', '2018-08-13 01:00:00', '2018-08-13 02:00:00', '2018-08-13 03:00:00', '2018-08-20 01:00:00', '2018-08-20 02:00:00', '2018-08-20 03:00:00']}
问题
如何使用函数输出填充 calendarydays 字段供用户从下拉列表中选择,我应该在哪里实现这个逻辑(在我的 View 或序列化程序中)?我的主要困惑是,因为我的函数依赖于来自 trainer_availability_only 的数据,所以我不想为这些信息创建一个单独的模型/表(因为那样看起来太重复了)。我也不完全理解在我的序列化器或 View 中我可以在哪里实现某种下拉菜单,以便用户选择单个 calendarydays 值(就像我能够为 ForeignKey 或 OneToOneField 示例)。
除了 trainer_availability_only 之外,其他模型的详细信息与问题并不相关,它基本上为用户提供了如下所示的下拉选择:
('Monday','12:00 am - 1:00 am')
('Wednesday','4:00 pm - 5:00 pm')
etc.
非常感谢任何帮助。
最佳答案
假设您不会通过可浏览的 API 使用此 API,并且某些客户端将使用这些 API,您应该提供一个单独的端点来获取可以显示在下拉列表中的选项。
由于日历天数仅取决于所选的 Availability ,端点可以类似于 /availability/<:id>/calender-days , 其中<:id>是所选选项的 ID。这将是一个 GET使用单独的 View 请求,您可以在其中调用从 Availability 计算日历日的函数对象并返回日历日列表。当您创建新的 Booking 对象或更新该对象时,此端点在这两种情况下都很有用。
关于您在可浏览 API 表单中显示的观点,可浏览 API 表单不会加载动态字段,因此它不会调用您的逻辑来根据选择获取日历日。对于 Foriegn 键和一对一关系,它在呈现表单时已经加载了模型的查询集,并使用它们来显示下拉列表。但是,如果您的实际用例是使用可浏览的 API 形式使用 API,那么您将不得不编写一些自定义 javascript 来加载值。
关于python - Django Rest Framework - 通过函数传递模型数据,然后将输出发布到同一模型的单独字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51426968/
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢