Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Filters for annotate in Django
How can I use Annotate to count only certain conditions? class User(models.Model) name = models.CharField(max_length=50) class Tweet(models.Model) user = models.ForeignKey("User", related_name="tweet") favorite = models.IntegerField(default=0) # I only want to count tweets with 100 or more favorites. users = User.objects.annotate(tweet_count=Count("tweet")) -
I can not send Email(Gmail) with Django on AWS
I upload a Web app created by Django(with Apache2) to AWS. I can send Emails from a Form on Ubuntu, but I can not on AWS EC2 and Server Error(500) occurs even if I use the same codes. If I send Email with python manage.py shell_plus, I can send Email. [ec2-user@]$ python manage.py shell_plus >>> from django.core.mail import send_mail >>> send_mail(mail_subject, mail_message, mail_from, mail_to, fail_silently=False,) But I cannot from the Django Web app. What should I do to send Email as Gmail? Or should I use Amazon SES instead? Thanks. settings.py EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = "smtp.gmail.com" EMAIL_PORT = 587 EMAIL_HOST_USER = os.environ.get("GMAIL_HOST_USER") EMAIL_HOST_PASSWORD = os.environ.get("GMAIL_HOST_PASSWORD") EMAIL_FROM_EMAIL = os.environ.get("GMAIL_HOST_EMAIL") EMAIL_USE_TLS = True I added Inbound Rule(EC2) port:587 IPv4:0.0.0.0 Django 4.1.7 Python 3.8.16 Apache 2.4.56 mod_wsgi 4.9.4 -
Save QuerySet result to json file and then unpack data from file
I need to save some rows from mysql table to json file (all values from this rows). I try to write this one: qs = SomeModel.objects.filter(type='some_type') qs_json = serializers.serialize('json', qs) with open('output.json', 'w', encoding='utf-8') as f: json.dump(qs_json, f, ensure_ascii=False, indent=4) I got file like this one: "[{\"model\": \"some_app.some_model\", \"pk\": 1, \"fields\": {\"description\": \"\", \"content_type\": 26, \"source_from_id\": 1, \"source_to_id\": 2, \"target\": \"main\", \"is_default\": true, \"parameters\": \"{\\\"window\\\": 43200}\", \"test_app\": 13, \"added_at\": \"2018-09-28\"}}, {\"model\": \"some_app.some_model\", \"pk\": 2, \"fields\": {\"description\": \"\", \"content_type\": 26, \"source_from_id\": 3, \"source_to_id\": 4, \"target\": \"main\", \"is_default\": true, \"parameters\": \"{\\\"_window\\\": 43200}\", \"test_app\": 13, \"added_at\": \"2018-09-28\"}}]" SomeModel have fields: description, content_type, source_from_id, source_to_id, target, is_default, parameters, test_app, added_at. I expect to get json file, because later I need to parse this file and load all this data back to database to another table. The structure should be like: [{"model": "some_app.some_model", "pk": 1, "fields": { 'description': "", 'content_type': 26, 'source_from_id': 1, 'source_to_id': 2, 'target': 'main', 'is_default': true, 'parameters': {}, 'test_app': 13, 'added_at': '2018-09-28' } }, {"model": "some_app.some_model", "pk": 1, "fields": { 'description': "", 'content_type': 26, 'source_from_id': 1, 'source_to_id': 2, 'target': 'main', 'is_default': true, 'parameters': {}, 'test_app': 13, 'added_at': '2018-09-28' } }] Then I have tried: with open('output.json', 'r') as f: json_file = f.read() … -
Quasar CLI with Vite + Django | Quasar SPA - Django
How to integrate Quasar SPA app with Django? Using: Quasar CLI with Vite Django Expected to have Django serving 'Index.html' and other static files build by 'quasar build' command. Which resides in "application/dist" and "application/dist/assets" directories. -
Too many db connections (django 4.x / ASGI)
I have deployed a django app (on ASGI using uvicorn) and getting a lot of OperationalError FATAL: sorry, too many clients already It seems that this is a known issue #33497 for django 4.x and ASGI, but I cant find anything on it (other than acknowledging it) so far Is there some way around this, or should I switch to WSGI (or downgrade to 3.2)? It seems to me that this is a blocking issue for using to ASGI altogether. Shouldn't it be better documented? (unless I missed it) -
Get a more Accurate search bar In Django
I currently have a working search bar for my Django website, but because of my database getting bigger the results get less accurate, for Example if I type in Her, the first object that shows up is The Marshall MatHERs LP2, but I want the Object that is literally named "her" to come first to make it more accurate, how to do this? Code: def search_album(request): if request.method == 'POST': searched = request.POST.get('searched') album = Album.objects.filter(title__contains=searched) return render(request, 'home/search_album.html', {'searched':searched, 'album':album}) else: return render(request, 'home/search_album.html') -
Django Channels wesbsocket fails on Heroku
I have an app which is deployed to Heroku and uses django channels 3.0.4. It's been running perfectly for the past 18 months but now gives the following error: WebSocket connection to 'wss://my-app.myurl/ws/quiztest/mc/' failed: I have not changed any of the code from when it was working previously. I also have a test version of the app running on Heroku using exactly the same codebase and it works fine, which would suggest the error may be to do with my Heroku config, although I've compared the settings of this app with the test app and they seem OK. Everything else in my app works fine, just the django channels websocket issue. I have spun up a simple test to recreate the issue. Here is the JS that tries to connect: <script> var loc = window.location; var wsStart = 'ws://'; if (loc.protocol == 'https:'){ wsStart = 'wss://'; } var endpoint = wsStart + loc.host + '/ws/quiztest/'; var username = 'mc'; var socket = new WebSocket(endpoint + username + '/'); console.log(socket); console.log(endpoint + username + '/'); socket.onopen = function(e) { console.log('Open Host Socket') }; socket.onmessage = function(event) { // Handle incoming messages from the server here console.log('Received message:', event.data); } socket.onclose = … -
Django admin site fails to load using static CSS
I have Django project for which the built-in admin client has stopped working. It looks like Python is failing to handle a list object when it is expecting a string(?) while loading a CSS file using Django's "static" methods. I've gone over my settings.py and admin.py and checked all "static" config settings against the Django documentation. When I run different Django projects, the admin site works fine. Here are the errors and settings from the project. I'm running Django 4.1.5 and Python 3.10.6 on the Django dev web server. Any pointers and advice are greatly appreciated. web page returns: AttributeError at /admin/login/ 'list' object has no attribute 'rsplit' Request Method: GET Request URL: http://localhost:8000/admin/login/?next=/admin/ Django Version: 4.1.5 Exception Type: AttributeError Exception Value: 'list' object has no attribute 'rsplit' Exception Location: /usr/local/lib/python3.10/dist-packages/django/utils/module_loading.py, line 25, in import_string Raised during: django.contrib.admin.sites.login Python Executable: /usr/bin/python Python Version: 3.10.6 Python Path: ['/home/ed/PycharmProjects/wikidataDiscovery', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/ed/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages'] Server time: Sun, 26 Mar 2023 05:44:51 -0700 and pick of template error Here's all "static" info in settings.py: STATIC_URL = 'static/' # STATIC_ROOT = '' STATICFILES_STORAGE = [ 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ] -
How to get Django and ReactJS to work together in 2023?
I am new to both technologies but i have used WebPack and babel with Django rest framework. I had a lot of issues in my experience. I am also interested in using Vite but honestly i got lost in the installation guide. I'm looking to create a simple Django api backend and react frontend(fetching data with Axios. What's the best way to How can i integrate React and Django in 2023? -
What's wrong with my Django app deployed with Heroku? Server error 500
I made a blog using Django. I deployed it with Heroku, but when I load the page, it said Server Error 500. It is not loading my templates. What could went wrong? Maybe my settings.py is not sat up correctly. I'm new in Django and Heroku, so if anyone can help me, I would be thankful. Here is my file tree: Here is my settings.py: Here is a Heroku log: » Warning: heroku update available from 7.53.0 to 8.0.2. 2023-03-25T21:45:52.759511+00:00 app[web.1]: [2023-03-25 21:45:52 +0000] [2] [INFO] Starting gunicorn 20.1.0 2023-03-25T21:45:52.759842+00:00 app[web.1]: [2023-03-25 21:45:52 +0000] [2] [INFO] Listening at: http://0.0.0.0:32581 (2) 2023-03-25T21:45:52.759886+00:00 app[web.1]: [2023-03-25 21:45:52 +0000] [2] [INFO] Using worker: sync 2023-03-25T21:45:52.762814+00:00 app[web.1]: [2023-03-25 21:45:52 +0000] [7] [INFO] Booting worker with pid: 7 2023-03-25T21:45:52.816818+00:00 app[web.1]: [2023-03-25 21:45:52 +0000] [8] [INFO] Booting worker with pid: 8 2023-03-25T21:45:53.000000+00:00 app[api]: Build succeeded 2023-03-25T21:45:53.195760+00:00 heroku[web.1]: State changed from starting to up 2023-03-25T21:46:07.408261+00:00 app[web.1]: 2023-03-25 21:46:07 [8] [ERROR] pathname=/app/.heroku/python/lib/python3.11/site-packages/django/utils/log.py lineno=224 funcname=log_response Internal Server Error: /accounts/login/ 2023-03-25T21:46:07.408275+00:00 app[web.1]: Traceback (most recent call last): 2023-03-25T21:46:07.408276+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.11/site-packages/django/core/handlers/exception.py", line 47, in inner 2023-03-25T21:46:07.408276+00:00 app[web.1]: response = get_response(request) 2023-03-25T21:46:07.408276+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^ 2023-03-25T21:46:07.408277+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.11/site-packages/django/core/handlers/base.py", line 181, in _get_response 2023-03-25T21:46:07.408278+00:00 app[web.1]: response = wrapped_callback(request, *callback_args, **callback_kwargs) 2023-03-25T21:46:07.408278+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ … -
Some files "rollback magically" to previous versions, probably related to DST - Daytime saving light (Also could be Django-related issue)
I'll try to give as much details as possible, as this problem is very strange to me (I've never seen this in +10 years of production servers maintenance), and I couldn't fully understand what happened, and how to prevent this to happen in the future. I'd love to hear your feedbacks. Chapter 1: The context and the problem I've got this one Django server production (running with Gunicorn), where a few instances of Django run (3, to be exact). For your information, this server runs on CentOS 7.5.1804. This morning, one of my Django instance (the most important one) was out of service (classic HTTP 502). First clue, I've got the message warning mydjangoinstance.service changed on disk. run 'systemctl daemon-reload' to reload units when I attempt to restart the service (my Django instances run with systemctl daemon). I don't really pay attention - know I should have tho - since we didn't make any recent changes to the .service file... After a small investigation, I notice that some critical files of my Django installation of this instance has changed, for no apparent reasons, they "rollback" to a far previous version. If you're familiar with Django architecture, it concerns files such … -
Nested forloop counter in django template
I created one django template, there i have nested 3 for loop there. i need to make forloop counter: {% for i in myloop1 %} {% for j in i.loop2 %} {% for k in j.func %} {{forloop.parentloop.counter}}_{{ forloop.counter }} {% endfor %} {% endfor %} {% endfor %} -
How to fix nested DRF serializer API response value is being inside list?
I have a problem with nested serializer. I'm using class absed validators, and raise custom Validation error that returns dictionary with key value paris that looks like this { "details": "Some error details", "summary": f"Field has error" } but when I'm raising error from nested serializer it has dufferent format, where value is an list instead of string "tags": [ { "details": [ "'My field' should not contain spaces" ], "summary": [ "Field Tag 'One more filed' should not contain spaces" ] } ] expected response "tags": [ { "details": "'My field' should not contain spaces", "summary": "Field Tag 'One more filed' should not contain spaces" } ] serializers.py class PostSerializer(serializers.ModelSerializer): user = serializers.SlugRelatedField(slug_field="name", read_only=True) title = serializers.CharField(required=True, validators=[TitleValidator()]) content = serializers.CharField(required=True) tags = TagSerializer(many=True, required=False) tag serializer module class TagSerializer(serializers.ModelSerializer): tag = serializers.CharField(min_length=3) class Meta: model = Tags fields = ["tag"] validators=[TagValidator()] class TagValidator: def __call__(self, tags: OrderedDict): tag = list(tags.values())[0] errors = [] if " " in tag: errors.append(f"'{tag}' should not contain spaces") if len(errors) > 0: raise PostException.validation_error( errors, "Tag", ) return tags erros.py file class PostException(Exception): @staticmethod def validation_error(error, field, **kwargs) -> ValidationError: data = { "details": error, "summary": f"Field {field} {error[0]}" } return ValidationError(data) When … -
EC2 Django instance ERR_ADDRESS_UNREACHABLE from outside
I have an EC2 instance working with NGinx and Gunicorn. Nginx is running fine. Gunicorn is running fine. Django app is running fine. When i curl -v 127.0.0.1:80 on the machine, i receive the home page. OK. But when i curl -v public_ip_address:80 or curl -v public_dns_address:80 i got unreachable error. So i simplify my nginx configuration with server { listen 80; server_name my_public_dns my_public_ip; return 200; } to reduce errors to the minimum. It's still the same error. My iptable : sudo iptables -vnL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 6 340 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 ctstate NEW 2 120 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 flags:0x17/0x02 ctstate NEW 80 port is obviously open in EC2 instance's security group. Firewall is ok. sudo ufw status verbose Status: inactive So it doesn't seem to be some of firewall, port, nginx, gunicorn error. I'm stuggling on it for few days ago. -
inner loop in button group django
I have two loops one iterates over the users and one to delete the users. Problem is the code is showing users next to each other and the button with svg icon next to each other, how can I append the user buttons with their svg icons? my Template: <div class="btn-group me-2 mb-2"> {% for user in usecase_assigned %} <button type="button" class="btn btn-outline-danger">{{user|join:', '}}</button> {% endfor %} {% for unassign in user_assigned %} <form action="{% url 'unassign_emp' eid=unassign.0 ucid=result.usecase_id %}" method="POST"> {% csrf_token %} <button type="submit" class="btn btn-danger" name="unassign_emp"> <svg xmlns=http://www.w3.org/2000/svg width="16" height="16" fill="currentColor" class="bi bi-file-x-fill" viewBox="0 0 16 16"> <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM6.854 6.146 8 7.293l1.146-1.147a.5.5 0 1 1 .708.708L8.707 8l1.147 1.146a.5.5 0 0 1-.708.708L8 8.707 6.854 9.854a.5.5 0 0 1-.708-.708L7.293 8 6.146 6.854a.5.5 0 1 1 .708-.708z"></path> </svg> </button> </form> {% endfor %} </div> what I'm getting: -
How to step forward queryset items to their foreignkey item in another model
class User(AbstractUser): id = models.BigAutoField(primary_key=True) class Follow(models.Model): id = models.IntegerField(primary_key=True) userPointer = models.ForeignKey(User, on_delete=models.CASCADE, related_name="follower") userTarget = models.ForeignKey(User, on_delete=models.CASCADE, related_name="followed", null=True) A users id passes to views, I want return followers queryset. I have tried:↓ test = User.objects.get(pk=request.user.id).follower.all() Now a qureryset of Follow model is generated. But I need each item be translate to it's appropriated userTarget foreignkey. test = User.objects.get(pk=request.user.id).follower.all().userTarget This not work! -
Django cannot compare string
I get data from 2 table by search key_id in Data table and find key_name in Key table like this. data=Data.objects.filter(username=username) key=Key.objects.filter(key_id__in=data.values_list('key_id')) data = {'data':data, 'key':key} return render(request,'form.html', data) In html I want to show data key_name which key_name is in table Key . So, I have to use for loop like this code. {% for data in data %} {% for key in key %} {% if data.key_id == key.key_id %} {{ key.key_name }} {% endif %} {% endfor %} {% endfor %} The output not show anything If I run this code outside if tag. {{ key.key_id }} It show output like this. 001 002 001 002 And if I run this code outside if tag. {{ data.key_id }} It show output like this. 001 001 002 002 Why when I compare it not show anything. How to fix it? -
Hat jemand lust gemeinsam ein Python Webprojekt zu starten?
Ich würde gerne ein Python webprojekt mit z.B. Django zu ertsellen, wenn jemnad Interesse hat gerne Kommentar oder PN. Ich würde gerne ein Python webprojekt mit z.B. Django zu ertsellen, wenn jemnad Interesse hat gerne Kommentar oder PN. -
manage.py migrate causes 'staticmethod' object is not callable
I'm trying to do python manage.py migrate on a cPanel but I keep getting TypeError: 'staticmethod' object is not callable. makemigations and collectstatic work fine. I've attempted to fix this by installing WhiteNoise but it didn't work. In base.py I have: STATICFILES_DIRS = [ os.path.join(PROJECT_DIR, "static"), ] STATICFILES_STORAGE = "django.contrib.staticfiles.storage.ManifestStaticFilesStorage" STATIC_ROOT = os.path.join(BASE_DIR, "static") STATIC_URL = "/static/" MEDIA_ROOT = os.path.join(BASE_DIR, "media") MEDIA_URL = "/media/" in urls.py I have: urlpatterns = [ re_path(r'^images/([^/]*)/(\d*)/([^/]*)/[^/]*$', ServeView.as_view(), name='wagtailimages_serve'), path('tz_detect/', include('tz_detect.urls')), # path("django-admin/", admin.site.urls), path("admin/", include(wagtailadmin_urls)), path("documents/", include(wagtaildocs_urls)), path(r'sitemap.xml', sitemap), path('robots.txt', RobotsView.as_view()) ] if settings.DEBUG: from django.conf.urls.static import static from django.contrib.staticfiles.urls import staticfiles_urlpatterns # Serve static and media files from development server urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns = urlpatterns + [ path('__debug__/', include('debug_toolbar.urls')), path("", include(wagtail_urls)), ] I printed them in production (in the cPanel) and path to each looks correct. -
Can I send a csrf cookie-token from javascript to a Django api?
I have a SAP (written in the Svelte framework) and presented by Netlify. The business logic and data is handled by a Django app. So far I have only used GET and everything works well. But now I want to upload a file's content and use POST. When I try to POST to the Django app I get a 403 error, specifically: WARNING:django.security.csrf:Forbidden (Origin checking failed - http://localhost:8888 does not match any trusted origins.): /test-put/ I think I have overcome any CORS issues (see this question). The call to the Djnago API is javascript async function sendDataToAPI(payload) { let endpoint = 'http://192.168.4.28:8000/test-put/' const form_data = new FormData(); form_data.append("payload", payload); await fetch(endpoint, { credentials: "same-origin", method: "POST", body: JSON.stringify({ data: payload, }), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', "X-CSRFToken": getCookie("csrftoken"), }, }) .then((response) => response.json()) .then((result) => { console.log("Success:", result); }) .catch((error) => { console.error("Error:", error); }); } function getCookie(name) { let cookieValue = null; if (document.cookie && document.cookie !== '') { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) === (name + '=')) { … -
Django how to get data from table of ForeignKey
I create Table DeviceKey and UserKey which api_key is ForeignKey to api_key in DeviceKey. class DeviceKey(models.Model): api_key=models.CharField(max_length=100,unique=True) api_key_name=models.CharField(max_length=100) def __str__(self): return self.api_key class UserKey(models.Model): username = models.CharField(max_length=100) api_key=models.ForeignKey(DeviceKey,on_delete=models.CASCADE) def __str__(self): return self.username I want to show api_key_name by using api_key in table UserKey. So, I use api_key=data.api_key like this code views.py username = request.user.username data=UserKey.objects.filter(username=username) device=DeviceKey.objects.filter(api_key=data.api_key) data = {'userkey':data, 'device':device} return render(request,'userkey_form.html', data) I create html file like this. {% for userkey in userkey %} {{ device.api_key_name }} {% endfor %} When I run it show error like this. 'QuerySet' object has no attribute 'api_key' It error at this line. How to fix it? device=DeviceKey.objects.filter(api_key=data.api_key) -
How to use Postgres mode() function in Django
How can I use Postgres' mode() WITHIN GROUP function in Django aggregations? -
My Html page is showing the {% extends "/tasks/layout.html" % } statement in the page preview, I am using Django how do i solve this problem??
this is my layout.html <!DOCTYPE html> <html lang="en"> <head> <title>Tasks</title> </head> <body> {% block content %} {%endblock%} </body> </html> this is my index.html {% extends "/tasks/layout.html" % } {% block body%} <h1> VIEW BLOCK</h1> <ul> {% for task in tasks%} <li>{{task}}</li> {%endfor%} </ul> <a href="{% url 'tasks:add' %}">Add a new Task</a> {%endblock%} How do i remove this exteneng statement from my HTML page i want to remove the extnend from the HTML page can anyone help -
Trying to create record in django results in some fields being ignored
I have a form where I collect information, but some more processing needs to be done before I save the data, so rather than using form.save I am trying to create the record directly. However when the record is created manually, no matter what approach I use, only one field is being saved (the 'message' field). I have a pretty simple model, with just 4 fields: class PaymentReceived(models.Model): name = models.CharField(verbose_name='First name', max_length=50, blank=True), pay_amount = models.IntegerField(null=False, blank=False), date = models.DateTimeField(auto_now_add=True), message = models.TextField(max_length=500, blank=True) I've tried 3 different methods to create a new record: 1: new_payment = PaymentReceived(name=request.session['name'],message=request.session['message'],pay_amount=request.session['pay_amount']) new_donaton.save() 2: new_payment = PaymentReceived.objects.create(name=request.session['name'],message=request.session['message'],pay_amount=request.session['pay_amount']) 3: new_payment = PaymentReceived() new_payment.name= request.session['name'] new_payment.message = request.session['message'] new_payment.pay_amount = request.session['pay_amount'] new_payment.save() Each of the values I am pulling from the sessions all have data in them, none are blank (confirmed several times), and when the message field is saved, it contains the data it should, just the name and pay_amount fields are not being saved for some reason. When I try to use the second method in particular, I get the error that: PaymentReceived() got unexpected keyword arguments: 'name', 'pay_amount' With those same fields not showing up in the saved record if I use … -
Django forms out as UL and not DIV
Just upgraded my Django app from version 3.2 to version 4.1. When I now render a form with multiple choices it renders each item as a div and not li. Sample code as follows: from django import forms CHOICES = [] for i in range(1, 20): CHOICES.append((str(i),str(i))) class ChoicesForm(forms.Form): choices = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple(), choices=CHOICES) form = ChoicesForm() print(form) The output(shortened) of the print(form) is <tr> <th><label>Choices:</label></th> <td> <div id="id_choices"><div> <label for="id_choices_0"><input type="checkbox" name="choices" value="1" id="id_choices_0"> 1</label> </div><div> <label for="id_choices_1"><input type="checkbox" name="choices" value="2" id="id_choices_1"> 2</label> </div><div> <label for="id_choices_2"><input type="checkbox" name="choices" value="3" id="id_choices_2"> 3</label> </div><div> <label for="id_choices_3"><input type="checkbox" name="choices" value="4" id="id_choices_3"> 4</label> But what I was getting in my earlier code was <tr><th><label>Choices:</label></th><td><ul id="id_choices"> <li><label for="id_choices_0"><input type="checkbox" name="choices" value="1" id="id_choices_0"> 1</label> </li> <li><label for="id_choices_1"><input type="checkbox" name="choices" value="2" id="id_choices_1"> 2</label> </li> <li><label for="id_choices_2"><input type="checkbox" name="choices" value="3" id="id_choices_2"> 3</label> </li> <li><label for="id_choices_3"><input type="checkbox" name="choices" value="4" id="id_choices_3"> 4</label> I can't find any reference to why this would change. Nor can I figure out how to create my form output as a list and not Is this expected or is there something else I am missing ? What I ultimately want to achieve is to format the output as rows of items and not a column …