我正在制作一款网页游戏,其中每个世界都可以成为一个联盟的一部分。
class World(models.Model):
# rest of Model
alliance = models.ForeignKey('Alliance', related_name='allmember', default=None, blank=True, null=True)
officer = models.NullBooleanField()
leader = models.NullBooleanField()
class Alliance(models.Model):
allianceid = models.AutoField(primary_key=True)
alliance_name = models.CharField(max_length=20, unique=True)
alliance_desc = models.TextField(max_length=200)
Run Code Online (Sandbox Code Playgroud)
我认为使用内联,我可以在联盟页面上显示联盟的成员。但是,我只能编辑军官和领导者状态,而我希望也能够编辑会员状态。这是我正在使用的内联。
class MemberInline(admin.TabularInline):
model = World
fk_name = 'alliance'
# excludes
class AllianceAdmin(admin.ModelAdmin):
inlines = [
MemberInline,
]
Run Code Online (Sandbox Code Playgroud)
我想我真正想问的是我是否可以从目标模型而不是发起者编辑管理站点中的外键关系。
我正在使用Celery和Django进行在线游戏.
我根据这个答案编写了中间件来检查Celery是否可用并运行:检测Celery是否可用/正在运行
我的代码实际上是这样的:
from celery.task.control import inspect
class CeleryCheckMiddleware(object):
def process_request(self, request):
insp = inspect().stats()
if not insp:
return render(...)
else:
return None
Run Code Online (Sandbox Code Playgroud)
但是我忘记了答案底部评论中的警告,'我发现上面每次运行时都会向rabbitmq添加两个reply.celery.pidbox队列.这导致rabbitmq的内存使用量逐渐增加.
我现在(仅一天之后!)注意到从线路开始偶尔出现500次错误insp = inspect().stats()
并终止OSError: [Errno 4] Interrupted system call
.
是否有一种内存安全的方法来检查Celery是否可用并正在运行?
我有一个Tkinter窗口,需要保持在所有其他窗口(包括全屏窗口)之上。
我尝试过的事情:
root.attributes('-topmost', True)
在mainloop之前-不起作用
self.root.wm_attributes("-topmost", True)
在班级内部-不起作用
root.overrideredirect(True)
在mainloop之前-仅适用于Linux
root.lift()
在mainloop之前-不起作用
最后,我root.lift()
将被反复称为:
class TestingGUI:
def __init__(self, root):
self.root = root
self.EnsureTop()
def EnsureTop(self):
root.lift()
root.after(5000, self.EnsureTop)`
Run Code Online (Sandbox Code Playgroud)
从某种意义上说,它可以成功地将窗口提升到我手动切换为“始终在顶部”的任何其他窗口上,例如使用Dexpot,但至关重要的是,它不适用于全屏应用程序。
具体来说,我需要在游戏中展示它,因为它是游戏中的音乐播放器。我对需要重复使用某些命令以确保再次将窗口调用到顶部的解决方案很好。